使用OpenCV FeatureDetector報錯的問題
報錯基本分為兩類,一個是FeatureDetector::create("SIFT")時crash,一個是.detect時候crash
例如,如下的提問
http://code.opencv.org/issues/1820
https://stackoverflow.com/questions/13162074/siftfeaturedetector-detect-function-broken
FeatureDetector的官方說明文件如下:
http://docs.opencv.org/2.4/modules/features2d/doc/common_interfaces_of_feature_detectors.html
網上的解決辦法包括如下幾類:
1.處理的影象必須是灰度圖GRAYSCALE
2.執行前必須執行create,但create前必須初始化nonfree模組。initModule_nonfree()
3.2.4.X版本後,把FeatureDetector從features2d移動到了非免費模組nonfree,所以要修改引用的標頭檔案。
將#include "opencv2/features2d/features2d.hpp"引用
改為#include "opencv2/nonfree/nonfree.hpp
我用的是opencv2.4.9,最後得到的猜測是,2.4.9的features2d中仍然有FeatureDetector的定義,所以雖然我都也依賴了nonfree,但由於features2d在nonfree之前,所以導致了錯誤的發生。修改順率改為如下後,程式碼可以成功執行。
opencv_nonfree249d.lib
opencv_features2d249d.lib