忍者ブログ


[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



[ 2018/09/25 10:44 | ]
【Mac OS X 10.6 Snow Leopard】OpenCV2.2の導入(2011/05/26 いくつか追記)
久々に真面目な記事を・・・

今回、本格的にカメラの画像処理を行おうと思ったので、OpenCV2.2を導入してみました。
ちょっと導入に苦労してしまった部分もあったので、メモしておきます。
もしかしたら私の環境以外では失敗するかもしれませんが、参考までに。

ちなみにOpenCVのリビジョンは r4828 で確認しています。
また、CMakeの使い方などについては他のサイトをあたってください。

<2011/05/26 追記>
※ここではOpenCV2.2をコンピュータにインストールしないで使う方法をメインに記述しています




0. 前提
MacPortsが導入済みである
CMakeが導入済みである(当方、バージョン2.8-1で確認、2.8-4 だと失敗しました)
・ちなみにCMakeはターミナルから実行すると失敗しました。なんでやねん。


1. 導入前の準備
Subversionなど、必要なプログラムをインストールしていきます。
 $ sudo port install subversion
 $ sudo port install pkgconfig
 $ sudo port install jpeg libpng tiff ffmpeg

pkgconfigのパスを通します。
 $ export PKG_CONFIG_PATH=/usr/lib/pkgconfig
(環境によっては /usr/local/lib/pkgconfig かもしれません)


2. OpenCV2.2のダウンロード
ここでOpenCV2.2を取得します。
以下のコマンドを、導入先のディレクトリ(例えば ~/libs/OpenCV2.2/)上で実行します。
 $ svn co https://code.ros.org/svn/opencv/branches/2.2 ./
r4828 を取得したい場合は 「svn co -r 4828 https......」 とすればOKです)

ここまでで、同ディレクトリ内には opencv と opencv_extra の2つのディレクトリがあるはずです。


3. ビルド
ここからはCMakeを使います。CMakeの使い方については述べません。
CMakeはコマンド実行ではなく CMake〜.app を直接実行したほうがいいかもしれません。

生成元は、先ほどの opencv のディレクトリに設定します。
また、生成先は opencv/build のように、生成元と分けたほうが良いと思います。

以下のものを変更し、Configure/Generateします。
BUILD_NEW_PYTHON_SUPPORT
CMAKE_CXX_COMPILER
CMAKE_CXX_FLAGS
CMAKE_C_COMPILER
CMAKE_OSX_ARCHITECTURES
:OFF
:/usr/bin/g++-4.0
:-D__STDC_CONSTANT_MACROS
:/usr/bin/gcc-4.0
:i386
Configureをした後も変更が反映されているか再確認することをおすすめします。

この作業が完了したら、buildディレクトリ上でmakeします。
 $ make
(あるいは make -j8 などにして高速化を図るとか)

makeが完了したら、あとはパスを通すだけでコンパイルの準備ができます。
(makeに失敗した場合の原因としては、CMakeのバージョンや、CMakeの設定が反映されていないことなどがあります(実際にありました。))
<2011/05/26 追記>
(今回は当方の事情で「make install」したくない場合について書いています。通常はこの段階でmakeしたディレクトリ上(今回は ~/libs/OpenCV2.2/opencv/build など)で
make install
コマンドを入力し、コンピュータにインストールしましょう。
そうすれば次章の コンパイル方法 は格段に楽になるハズです。)



4. プログラムのコンパイル方法
自作プログラムのコンパイルに必要なもの・・・インクルードパス、ライブラリパス、使用ライブラリフラグ

<2011/05/26 追記>
※make installした場合は以下の手順は(おそらく)完全に省けます
--> 例)g++ -o a.out test.cpp `pkg-config --cflags --libs opencv`
だけでコンパイルできます。

ちなみに ` の記号(not ')は、通常は「バッククォート」、ちょっと気取ると「グレイブアクセント(grave accent)」とか「アクサングラーブ(accent grave)」なんて読むらしいです。
日本語キーボードだと Shift+@ で入力できます。


実は OpenCV2.2 になってから、なんとインクルードパスがバラバラに細分化されてしまいました。(include/にまとめておけばよいものを。。。)
というわけで、ここに関してはいちいち記述するのがとっても面倒なので、
必要な部分だけですが、私の .profile(bash起動時に読まれるファイル)をそのまま晒します。
こちらにも貼っておきます)
# OpenCV2.2関連のパス
export OPENCV22_DIR='/Volumes/DataHD/Libraries/OpenCV_2.2.0_2/r4828/opencv'
OPENCV22_INCLUDE=( \
"-I${OPENCV22_DIR}/include" \
"-I${OPENCV22_DIR}/modules/calib3d/include" \
"-I${OPENCV22_DIR}/modules/contrib/include" \
"-I${OPENCV22_DIR}/modules/core/include" \
"-I${OPENCV22_DIR}/modules/features2d/include" \
"-I${OPENCV22_DIR}/modules/flann/include" \
"-I${OPENCV22_DIR}/modules/gpu/include" \
"-I${OPENCV22_DIR}/modules/highgui/include" \
"-I${OPENCV22_DIR}/modules/imgproc/include" \
"-I${OPENCV22_DIR}/modules/legacy/include" \
"-I${OPENCV22_DIR}/modules/ml/include" \
"-I${OPENCV22_DIR}/modules/objdetect/include" \
"-I${OPENCV22_DIR}/modules/video/include" \
"-I${OPENCV22_DIR}/modules/ffmpeg" \
"-I${OPENCV22_DIR}/modules/haartraining" \
"-I${OPENCV22_DIR}/modules/python" \
"-I${OPENCV22_DIR}/modules/traincascade" \
)
export OPENCV22_LIBS='-L/Volumes/DataHD/Libraries/OpenCV_2.2.0_2/r4828/opencv/build/lib'
export OPENCV22_LIBS_OPT=( \
"-lopencv_core" \
"-lopencv_flann" \
"-lopencv_imgproc" \
"-lopencv_highgui" \
"-lopencv_ml" \
"-lopencv_video" \
"-lopencv_objdetect" \
"-lopencv_features2d" \
"-lopencv_calib3d" \
"-lopencv_legacy" \
"-lopencv_contrib" \
)
alias OPENCV22_GPP="g++ ${OPENCV22_INCLUDE[@]} $OPENCV22_LIBS ${OPENCV22_LIBS_OPT[@]} -arch i386"

これで単体のプログラムならば OPENCV22_GPP test.cpp としてコンパイルできます。
それ以外の場合でも ${OPENCV22_〜} を使って何とか出来ると思います。。。



参考文献
・・・導入関連・・・
[1] OpenCV 2.0.0a + Mac OSX 10.6 Snow Leopard インストール
  http://d.hatena.ne.jp/tamakiii/20091125/1259172941
[2] Snow LeopardにOpenCV-2.0.0をインストール
  http://d.hatena.ne.jp/Yamagutsu/20091115/

・・・問題対処・・・
[3] Snow LeopardにOpenCV 2.2をインストールした時のエラー対処
  http://eternuement.blogspot.com/2011/02/snow-leopard-opencv-22.html
[4] Just a note to solve: libavutil/common.h:154: error: ‘UINT64_C’ was not declared in this scope
  (短縮失礼) http://bit.ly/g2mFnW

拍手[0回]

PR


[ 2011/03/28 11:20 | Comments(0) | TrackBack(0) | プログラム ]

トラックバック

トラックバックURL:

コメントを投稿する






<< 【超主観的】Webブラウザの選択基準【結論:Firefox最強】  |  ホーム  |  なぜか「そろばん」にハマった >>