322 文字
2 分
【OpenCV 3.4】SIFTを使おうとするとError: The function/feature is not implementedと出力された
今までOpenCV 3.4.0を使用していたのですが、最近OpenCV 3.4.3にバージョンアップしました。バージョンアップ後にSIFTを使おうとするとちょっとハマったのでメモです。
現象
SIFTを使いたかったので、OpenCVのopencv_contribも一緒にビルドしました。しかし、いざSIFTを使ったプログラムを動かそうとすると、こんなエラーが表示され、SIFTを使えませんでした。
OpenCV: terminate handler is called! The last OpenCV error is:OpenCV(3.4.3) Error: The function/feature is not implemented (This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library) in cv::xfeatures2d::SIFT::create, file D:\library\opencv-3.4.3\opencv_contrib-3.4.3\modules\xfeatures2d\src\sift.cpp, line 1207特許で保護された機能を使うには、それ専用のオプションをつけてビルドしてね。ということらしいです。
SIFTは特許で保護されているので使えなかったわけですね。
対策
出力されたエラーを見るに、CMakeでOPENCV_ENABLE_NONFREEというオプションをつけて再度OpenCVをビルドすればいけそうな雰囲気です。CMakeのオプションを探せば確かにありましたこのオプション。

このオプションにチェックをつけてOpenCVをビルドし直します。そして再度SIFTを使ったプログラムをビルド&実行すると、無事にSIFTが動きました!!