OpenCV3のトラッキングAPIを使いたくって、macOSでインストールが面倒だったので、メモ。
TL;DR
MacBook Pro (15-inch, 2016)で動く
OpenCV 3.2.0(相当)のフレームワーク置いときました。
http://ibu.tokyo/downloads/opencv-3.2.0.framework.zip
homebrewで入らない
プロトタイプ作業だったので、pythonでやりたいし、homebrewで簡単に入れたかった。
理想はこのオプション
brew install opencv3 --with-contrib --with-ffmpeg --with-python3 --without-python
なんかエラー出る…
brew install opencv3 --without-python --with-python3
brew install opencv3 --with-contrib
これでも駄目。issue見てもいまいちわからず。
なにもオプションつけないビルド済みのもの以外入らないんじゃ…
余談だけど最近のhomebrewはインストールみすると、関連するissueをログに吐いてくれるの便利。
あきらめてソースからビルド
最新のリリースv3.2.0を以下からダウンロード。
github.com
github.com
opencv_contrib/README.md
に書いてある方法はなぜかめんどくさい方法になっていたけど、frameworkビルド用のスクリプトが用意してあるぽい。
python opencv/platforms/osx/build_framework.py --contrib opencv_contrib build
やったービルドできた。
しかし実行するとTracking moduleが入ってない…。
std::cout << cv::getBuildInformation() << std::endl;
でビルド情報が見れるらしく。
どうやら、依存しているdnnのせいで、trackingモジュールが入ってないぽい。
dnnはディープ・ニューラル・ネットワークのモジュールでCaffeのモデルを読んだりできるらしい。
dnnのCMakeListsを読むと、CUDA使えない環境では使えないようにしている。これ、AMD RadeonなMacじゃ使えないんじゃ…。
あとで調べるとADMでCUDA動かすプロジェクトもあるみたい。だけど流石にそこまではできない。
CUDAをRadeonで動かす(導入編) - Fixstars Tech Blog /proc/cpuinfo
masterビルドできる
で半分諦めるものの、Githubの中を追っているうちに、masterブランチでは修正されていることに気づいた。
同じ方法でmasterブランチ上でビルドすると今度は無事にdnnモジュール、trackingモジュールも入った。
ビルドしたモジュール: core flann imgproc ml objdetect phase_unwrapping photo plot reg surface_matching video xphoto bgsegm dnn face fuzzy imgcodecs shape videoio xobjdetect highgui superres bioinspired dpm features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching world
入ってないモジュール: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 ts viz cnn_3dobj cvv dnn_modern freetype hdf matlab sfm
macは好きだけど、開発ではどんどん使えない子になっている…。
サンプル
contribに入っている、ArUcoのマーカーを吐き出すだけの、一番シンプルなサンプル。
github.com
Xcodeでビルドするときに依存ライブラリはこちら。
cv::imwrite
とうのファイル読み書きにWebP.framework入れろって怒られたので、iOS用のリンクしたら普通にビルドできた。
oFなどで使う場合はimwrite,imread使わないので、WebPなくても大丈夫。
マスト丼にログ残す実験をして、
ハマったところを後でブログに残そうって思ったりするのでhatenaさんとか、qiitaさんとかのインスタンスが立ったらいいなー。
https://mstdn.jp/@asus4