环境:
- windows
- vistual studio2017
- opencv_4.0.1
前提:
- 已配置过opencv_contrib-4.0.1
- 使用 debug ✖64
问题描述:
总是在detect(detectAndCompute也是)这个函数位置处出现错误:
0x00007FFB87B3A388 处(位于 image.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000001D36F1E9F0 处。
代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>
using namespace std;
using namespace cv;
using namespace xfeatures2d;
using namespace cv::xfeatures2d;
int main()
{
//Feature2D siftfd;
SIFT siftfd;
//Ptr<SIFT> siftfd = SIFT::create();
//SiftFeatureDetector siftfd;
//sift s;
//s.create();
Mat image1 = imread("car1.jpg");
Mat image2 = imread("car2.jpg");
namedWindow("car1_before", WINDOW_FREERATIO);
namedWindow("car2_before", WINDOW_FREERATIO);
imshow("car1_before", image1);
imshow("car2_before", image2);
//ptr<siftfeaturedetector> siftfd = siftfeaturedetector::create();
//ptr<sift> siftfd = sift::create();
//feature2d siftfd;
//vector<KeyPoint>kp1, kp2; //keypoint类型的容器
vector<KeyPoint>kp1;
Mat draw;
//kp1.resize(100);
//kp2.resize(100);
//siftfd.detectAndCompute(image1, Mat(), kp1, draw);
siftfd.detect(image1, kp1);
Mat outimage1;
drawKeypoints(image1, kp1, outimage1);
namedWindow("car1_after", WINDOW_FREERATIO);
imshow("car1_after", outimage1);
waitKey();
return 0;
报错情况: