OpenCV drawMatches没有任何作用

OpenCV drawMatches do nothing

本文关键字:任何 作用 drawMatches OpenCV      更新时间:2023-10-16

我正试图在两张图像上找到匹配的兴趣点。这个项目的最终目的是建造全景图。

我有这个代码

SIFT detector(0);
src1 = imread( folder + inputName1 , 1 );
cvtColor( src1, src1_gray, CV_BGR2GRAY );
// Detect first image
vector<KeyPoint> keypoints1;
detector.detect(src1_gray, keypoints1);
//Draw keypoints back to source image
drawKeypoints(src1,keypoints1,src1,Scalar::all(-1), 1);
imwrite(folder + outputName1,src1);

src2 = imread( folder + inputName2 , 1 );
cvtColor( src2, src2_gray, CV_BGR2GRAY );
// Detect second image
vector<KeyPoint> keypoints2;
detector.detect(src2_gray, keypoints2);
//Draw keypoints back to source image
drawKeypoints(src2,keypoints2,src2,Scalar::all(-1), 1); 
imwrite(folder + outputName2,src2);
vector<DMatch> matches;
Mat output;
drawMatches(src1,keypoints1,src2,keypoints2,matches,output);
imwrite(folder + "matches.jpg",output);

但在最终图像matches.jpg中,显示了所有点,并且矢量matches为空。我做错了什么?我想,只有匹配的点才会出现在最终的图像中,在向量matches中,我找到坐标来绘制点之间的线。

或者我应该使用RANSAC来查找匹配点吗?

您没有匹配任何点。看看这个例子:http://docs.opencv.org/doc/user_guide/ug_features2d.html.

例如,您需要提取描述符,然后将它们与FLANN进行匹配。然后你可以抽签;)

相关文章: