OpenCV特徵檢測出現Unhandled exception at……Access violation reading location 0x00000000.
阿新 • • 發佈:2019-02-02
OpenCV版本為2.4.12,Visual Studio 開發環境中執行。
在影象特徵檢測、匹配中出現了執行錯誤:
Unhandled exception at 0x569D1C00 (opencv_features2d2412d.dll) in Macher.exe: 0xC0000005: Access violation reading location 0x00000000.
經過除錯、定位,問題出現在下列語句:
detector->detect(image1, keypoints1);
detector->detect(image2, keypoints2);
發現detector物件為NULL,處於沒被初始化的狀態。
奇怪!明明使用了下面的語句進行了初始化:
detector = FeatureDetector::create(detectorName);
extractor = DescriptorExtractor::create(descriptorName);
問題就在這個create函式上。根據網上搜集的答案,總結如下:
用create之前要先加上:initModule_nonfree();
當然首先需要包含標頭檔案:#include "opencv2/nonfree/nonfree.hpp"
多謝這句話:“注意initModule_<modulename>()函式,這個函式要在create前使用,才可以動態的建立演算法,不然那個create的指標很野哦。大家都懂的。如果要使用SURF、SIFT演算法,就要呼叫inintModule_nonfree()