DIVE TO WORLD

ITを浅く広くピンポイントにお伝えするブログ

Macでopencv2.frameworkを試す(OpenCV 3.2.0)

XcodeOpenCVのプログラムを書く場合、従来は"opencv_core.dylib"などのライブラリをインポートしていましたが、version3.xよりiOSと同様に"opencv2.framework"を使うことが出来るようになりました。
OpenCV 3.2.0 で実際に使ってみたいと思います。


手順
1. OpenCVソースコード入手
2. フレームワークをビルド
3. Xcodeプロジェクトを作成
4. 必要なライブラリをインポート


iOS用のフレームワーク公式サイトよりダウンロード可能ですが、macOSは自分でビルドする必要があります。まずはソースコードを入手します。
f:id:mgrtex360:20161231141754p:plain
ダウンロードしたzipファイルを展開して、適当な作業フォルダに移動させておきましょう。


ビルド自体はとても簡単です。pythonファイルを実行するだけですが、動作に"CMake"が必要なので事前にインストールして下さい。CMakeが使える環境なら、pythonを実行するだけです。

python ./opencv/platforms/osx/build_framework.py [出力ディレクトリ]

実行すると、指定したディレクトリの中に"opencv2.framework"が生成されます。


次にXcodeプロジェクトを作成します。
"Create a new Xcode project"からmacOSの"Command Line Tool"を選択します。Languageは"C++"を選択。
f:id:mgrtex360:20161231143651p:plain


プロジェクトが開いたら、ライブラリの設定を行います。"Linked Frameworks and Libraries"の+ボタンをクリックして"Add Other..."から先ほど生成したopencv2.frameworkを選択します。
f:id:mgrtex360:20161231144209p:plain


opencv2.frameworkの追加が確認できれば、あとは"Build Settings"タブの"Search Paths"にある"Framework Search Paths"を設定すれば完了です。
※この手順を省くとヘッダーファイルのインクルードができませんので、注意して下さい。


しかし、このままだと実行時にエラーが発生するので、追加でライブラリをインポートとする必要があります。確認できた範囲だと、"AppKit.framework"、"OpenCL.framework"、"libcblas.tbd"、"liblapack.tbd"を別途インポートすれば実行可能みたいです。皆さんの環境でもお試しあれ。
f:id:mgrtex360:20161231145338p:plain