※2016年12月頃のメモです
動作環境
項目 | 内容 |
---|---|
OS | macOS Sierra 10.12.1 |
OpenCV | 2.4.13.1 |
Xcode | 8.1 |
言語 | C++ |
Xcodeでプロジェクトを新規作成する
macOSへのOpenCVを導入し、Xcode側でプロジェクトを作成する。
プロジェクトの作成
Xcodeを立ち上げて File > New > Project
からプロジェクトを作成。
続いて macOS > Command Line Tool
を選択。
次に Project Name
などの必要事項を入力。
今回は動作確認なので適当に入力し、言語は C++
を選択。
ソースコードを入力
今回はバイラテラルフィルタによる平滑化処理のサンプルコードを動かしてみる。
# include <iostream>
# include <opencv2/core/core.hpp>
# include <opencv2/imgproc/imgproc.hpp>
# include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
Mat src_img = imread("画像のパスを指定", 1);
if(src_img.empty()) {
printf("画像を読み込めませんでした。\n");
return -1;
}
Mat dst_img;
bilateralFilter(src_img, dst_img, 10, 40, 200);
imshow("src image", src_img);
imshow("result", dst_img);
waitKey(0);
}
Xcode側の設定
これで完了!と言いたいところだが、このままビルドすると以下のような警告が出力される。
'opencv2/core/core.hpp' file not found
XcodeでOpenCVをビルドするためには(NuGetを使わない場合)Visual Studioと同様ヘッダサーチパスとライブラリサーチパスを設定する必要がある。
ヘッダーサーチパスの設定
ヘッダーサーチパスを設定することでコンパイル時にOpenCVのインクルードファイルを参照することができる。
パスを設定するために左側のNavigator
からXcodeのプロジェクト(今回はopencv-sample
)を選択。
Build Settings > All > Search Paths > Header search Paths
へ移動し、 /usr/local/Cellar/opencv
をrecursive
で設定。
パスはそれぞれの環境によるが、HomebrewでOpenCVを導入した場合はおそらく上記のパスで問題ないはず。
ライブラリサーチパス
リンクするライブラリファイルを指定するためにライブラリサーチパスも設定する。
Build Phases > Link Binary With Libraries
から任意のライブラリファイルを追加して設定。
設定にあたってまずはFinderからライブラリを探す。
Finderのタブから移動 > フォルダへ移動
を選択し、/usr/local/Cellar/opencv/2.4.13.1/lib
と入力。
移動したディレクトリから今回は以下の3つのライブラリを選択し、XcodeのLink Binary With Libraries
へドラックアンドドロップしてパスを設定。
※OpenCVのバージョンやインストール方法によってパスは適宜変更すること
libopencv_imgproc.2.4.13.dylib
libopencv_highgui.2.4.13.dylib
libopencv_core.2.4.13.dylib
Xcodeでビルドする
設定が終わればあとは実行だけ。
今回は先ほどのサンプルコードをビルドしてみる。
右の画像がフィルタをかけた結果。問題なく動作していることを確認。
参考リンク
OpenCV.jp : OpenCV逆引きリファレンス — OpenCV-CookBook
HomebrewとXcode5でつくるOpenCVの環境 – なんてこったいブログ