关于opencv2的SiftFeatureDetector生成了一亿多keypoint
各位大神,我只是按照教学历程做一个简单的复制,可以编译通过,但每次都会在drawkeypoints这句上中断,查了一下,这时的keypoints向量总数有152896818个,请问这正常么(FAST算法也就生成几十个keypoints)。这个问题卡了我两天多了,求各位大神解决下,跪谢了。。。。。
中断描述如下:0x77c98d8f(ntdll.dll)处有未经处理的异常:0xc0000005:读取位置0x3d89299f使访问冲突。
具体简单代码如下:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/nonfree/nonfree.hpp>
using namespace std;
using namespace cv;
int main()
{
// 读入图像
cv::Mat image= cv::imread("try0.jpg",0);
cv::namedWindow("Original Image");
cv::imshow("Original Image", image);
// 特征点的向量
std::vector<cv::KeyPoint>keypoints;
// 构造SIFT特征检测器-
cv::SiftFeatureDetector sift;
// 检测SIFT特征值
sift.detect(image,keypoints);
// FastFeatureDetector fast(40);
// fast.detect(image,keypoints);
Mat featureImage=image.clone();
cv::drawKeypoints(image, // 原始图像
keypoints, // 特征点的向量
featureImage, // 生成图像
cv::Scalar(255,255,255), // 特征点的颜色
DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS); // 标志位
cv::namedWindow("SIFT Features");
cv::imshow("SIFT Features",featureImage);
waitKey(0);
return 0;
}