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>
に書き換えることでコンパイルが通ります.