尝试SIFT算法的使用,经历了漫长的opencv340拓展库的配置后,在代码复现的地方还是出现了问题,卡了几天了,希望能得到大佬们的帮助,感谢大家。
#include
#include
#include
#include
using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;
int main(int argc, char** argv)
{
Mat src = imread("D:/1.Zhou/5.Dailywork/lena.png",IMREAD_GRAYSCALE);
imshow("src", src);
int numfeature = 400;
Ptrdetector = SIFT::create(numfeature);//与SURF一样,剩余的取默认值
vectorkeypoints;
detector->detect(src, keypoints, Mat());
Mat resultImg;
drawKeypoints(src, keypoints, resultImg, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
imshow("SIFT keypoint", resultImg);
waitKey();
return 0;
}
0x00007FFCA2064B59 处(位于 SIFT_test.exe 中)引发的异常: Microsoft C++ 异常: ipp::IwException,位于内存位置 0x000000DED68FF834 处。
以及
无可用源
你这是编译的时候勾选了ipp之类的东西吗还是什么?一般只要nonefree勾上,各种test,example都不要,ipp一般也不选,除非你需要一些cpu加速的东西。
opeencv4.5.0下面可以运行,你是是看下,估计是头文件什么的不对,你这个头文件缺少,并且代码格式不对,乱掉了
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat src = imread("1.bmp", IMREAD_GRAYSCALE);
imshow("src", src);
int numfeature = 400;
Ptr<SIFT> detector = SIFT::create(numfeature);//与SURF一样,剩余的取默认值
vector<KeyPoint> keypoints;
detector->detect(src, keypoints, Mat());
Mat resultImg;
drawKeypoints(src, keypoints, resultImg, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
imshow("SIFT keypoint", resultImg);
waitKey();
return 0;
}