OpenCV 3.0.0-alphaでSIFT/SURFを使う

OpenCV 3.0を入れて,SIFTを使おうと思ったところ見当たらなかったのでメモ.
そもそも SIFT が入っている nonfree.hpp が見当たらなかった.
opencvのgitのログを見ると,31df47b 2014-08-11 の時点で,nonfreeとfeatures2dの一部がopencv_contrib/xfeatures2dへ移動したと書いてある.
なので,別途 opencv_contrib を落としてきて opencv と一緒にビルドしてインストールする必要がある.
ビルド時にCMAKEにopencv_contrib内のmodulesのパスを渡す.
手順は以下のとおり.

git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
mkdir opencvbuild
cd opencvbuild
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv/
make
sudo make install

これでOKなはず. cmake-gui を使う場合は, OPENCV_EXTRA_MODULES_PATH を一覧から探して,Valueに opencv_contrib/modules へのパスを書く.
が,手元の環境では cudalegacy がコンパイルできないっぽい.
ひとまず BUILD_opencv_cudalegacy のチェックを外してコンパイル.
さらに,xfeatures2Dの test, perf_test がコンパイルエラーになるので,
BUILD_PERF_TESTS と BUILD_TESTS もチェックを外した.
環境は,gcc4.8,CUDA6.0です.
ちなみに,これでインストールすると,
これまでのOpenCVで nonfree/nonfree.hpp だったものは,
opencv2/xfeatures2d/nonfree.hpp になります.
なので,これまで

#include <opencv2/nonfree/nonfree.hpp>

と書いていたものは,

#include <opencv2/xfeatures2d/nonfree.hpp>

に書き換えることでコンパイルが通ります.

コメントする