1. 程式人生 > >使用OpenCV FeatureDetector報錯的問題

使用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