Xcode8でOpenCVを動かしてみる

前回の記事macOSOpenCVを導入し、OpenCVのサンプルコード(Python)を動かしたが、個人的なゴールは『過去にMicrosoft Visual Studioで作成したOpenCV(C++)のコードをmacOSでも動かす』なので、今回はXcodeOpenCVを動かすまでの手順を紹介する。

動作環境

項目 内容
OS macOS Sierra 10.12.1
OpenCV 2.4.13.1
Xcode 8.1
言語 C++

Xcodeでプロジェクトを新規作成する

OpenCVは既に導入済みなので早速Xcode側でプロジェクトを作成する。
Homebrewを使ったOpenCVの導入に関しては以下の記事を御覧ください。
keeponrockin.hatenablog.com

プロジェクトの作成

Xcodeを立ち上げてFile > New > Projectからプロジェクトを作成。




続いてmacOS > Command Line Tool を選択。





次にProject Nameなどの必要事項を入力。
今回はあくまで動作確認なので適当に入力する。
なお、言語はC++を選択。

ソースコードを入力

左側のmain.cppを選択してエディタ画面を開く。





今回はバイラテラルフィルタによる平滑化処理のサンプルコードを動かしてみる。

#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

XcodeOpenCVをビルドするためにはVisual Studioと同様(NuGetを使う場合は違うが…)ヘッダサーチパスとライブラリサーチパスを設定する必要がある。

ヘッダーサーチパスの設定

ヘッダーサーチパスを設定することでコンパイル時にOpenCVのインクルードファイルを参照することが可能になる。
パスを設定するために左側のNavigatorからXcodeのプロジェクト(今回はopencv-sample)を選択。


Build Settings > All > Search Paths > Header search Paths へ移動し、 /usr/local/Cellar/opencvrecursiveで設定。
パスはそれぞれの環境によるが、HomebrewでOpenCVを導入した場合はおそらく上記のパスで問題ないはず。

ライブラリサーチパス

リンクするライブラリファイルを指定するためにライブラリサーチパスも設定する。
Build Phases > Link Binary With Librariesから任意のライブラリファイルを追加して設定。
設定にあたってまずはFinderからライブラリを探す。


Finderのタブから移動 > フォルダへ移動を選択し、/usr/local/Cellar/opencv/2.4.13.1/libと入力。
移動したディレクトリから今回は以下の3つのライブラリを選択し、XcodeLink Binary With Librariesへドラックアンドドロップしてパスを設定。
OpenCVのバージョンやインストール方法によってパスは適宜変更すること

libopencv_imgproc.2.4.13.dylib
libopencv_highgui.2.4.13.dylib
libopencv_core.2.4.13.dylib


Xcodeでビルドする

設定が終わればあとは実行だけ。
今回は先ほどのサンプルコードをビルドしてみる。


美白化されたレナさんが出力される。

さいごに

今回はXcodeOpenCVをビルドする方法を紹介した。
試しに昔Visual Studioで動かしていたコードをXcode側で動かしてみると問題なく動作しました。
これでVisual Studioのためだけにデュアルブート化したMacBook ProからWindowsパーティションを削除することができそうです。

参考リンク

OpenCV.jp : OpenCV逆引きリファレンス — OpenCV-CookBook

HomebrewとXcode5でつくるOpenCVの環境 – なんてこったいブログ