特征检测器失败。我使用的是opencv 2.4.2,并在2.4.1上进行了检查。只有正在完成的事情是创建一个特征检测器并使用它来检测图像中的关键点。我得到未处理的异常崩溃,指向detector.cpp中名为“detecImpl()”的函数(即features2d \ sensors.cpp line:65)。这个错误确实卡住了,并且花费了大量的时间,所以任何帮助都非常感激。
#include <iostream>
#include <opencv2/core/core.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
cv::Ptr<cv::FeatureDetector> featureDetector;
cv::Ptr<cv::DescriptorExtractor> descriptorExtractor;
featureDetector = cv::FeatureDetector::create("SURF");
descriptorExtractor = cv::DescriptorExtractor::create("SURF");
cv::Mat imageColor;
cv::Mat image = cv::imread("car1.jpg", 0);
cv::cvtColor(image, imageColor, CV_GRAY2BGR);
try{
imshow("Test Image",imageColor);
cv::waitKey(3000);
}
catch(cv::Exception exc)
{
cout << "CV error occured : " + exc.msg;
}
std::vector<cv::KeyPoint> currentKeypoints;
try{
featureDetector->detect(image,currentKeypoints); //This line generates the error but no exception is caught ....
}
catch(cv::Exception exc)
{
cout << "CV error occured : " + exc.msg;
return -1;
}
}
答案 0 :(得分:3)
我已经弄清楚了。在新版本的opencv中,SURF / SIFT分布在一个单独的库中,需要在创建特征检测器之前进行初始化。
答案 1 :(得分:0)
我在VS2010上使用OpenCV 2.4.2也发生了同样的事情。
我发现以下内容有效: FAST,STAR,ORB,BRISK,GFFT和Harris。
SIFT,SURF将在包含非自由功能并启动它们之后工作。
同时密集&amp; SimpleBob崩溃了。
相对于其余部分给出最佳结果的是快速(性能+准确性)