XcodeでOpenCVを使えるようにする
最終目的は人によって異なると思うのですが,ひとますmacのXcodeでOpenCV使えるようにするまでの流れを書きます.
世の中には同じような記事がすでに沢山あるのですが,それらを参考にしつつ,結局自分の環境でうまく行った方法を備忘録的にメモしたものが本記事です.
Homebrewで必要ライブラリを入れる
OpenCVはHomebrewを使ってインストールします.Homebrew自体が入ってない方はまずはそちらをインストールしてきてください.Homebrewをインストールし終わったら,ターミナルから以下のコマンドでOpenCVおよびcmakeをインストールします.
で,Homebrewのチェック
OpenCVとcmakeが(正常に)インストールされたか確認.
図1 ディレクトリは作成できていますね.
Xcodeの設定
Xcodeを起動し,テンプレートを選ぶ画面にてMacOSを選択し,Command Line Toolを選びます.ここから少しややこしいです.
①メニューからBuild Settingを選択
②Allをクリックして全部の設定を表示
③Header Search Pathsを見つける
④Header Search Paths右側の空白にてダブルクリック
⑤+ボタンを押してパス入力画面へ
⑥/usr/local/Cellar/opencv/のさらに下位のincludeのパスを追加
⑦recursiveへと変更
図2 上記手順でやりましょう
次に,ライブラリの追加を行います.もうそろそろ終わりです.
まず,finderで,ライブラリのある場所に行きます.私の環境では下記でした.
/usr/local/Cellar/opencv/3.4.2/lib
初めのうちはよくわからないので,ライブラリ(.dylib)を全て追加しましょう.ということで,エイリアスでない.dylibを全て選択
図3 エイリアスでない.dylibを全て選択
①メニューからBuild Phasesを選択
②Link Binary With Librariesを選び,先ほど選択した.dylibをドラッグアンドドロップで追加
図4 ライブラリを追加
サンプルコードの実行
導入は先ほどまでで終わっているのですが,せっかくなので,動作確認の意味も込めて簡単なプログラムを動かしてみましょう.
#include <cv.h>
#include <highgui.h>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(){
cv::Mat imMat(256,256, CV_8UC3);
for(int y = 0 ; y < imMat.rows; y++){
for(int x = 0 ; x < imMat.cols; x++){
cv::Vec3b &p = imMat.at<cv::Vec3b>( y, x );
p[ 0 ] = x; p[ 1 ] = y; p[ 2 ] = (int)((x+y)/2);
}
}
imshow("openCVTest",imMat);
waitKey(0);
return 0;
}
図5 画像が出ました