【问题标题】:OpenCV drawMatches do nothingOpenCV drawMatches 什么都不做
【发布时间】:2014-08-27 14:09:19
【问题描述】:

我正在尝试在 2 张图片上找到匹配的兴趣点。这个项目的最后是构建全景图。

我有这个代码

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 来查找匹配点?

【问题讨论】:

    标签: c++ opencv graphics computer-vision


    【解决方案1】:

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

    您需要提取描述符,然后将它们与 FLANN 进行匹配。然后你就可以画出你的火柴了;)

    【讨论】:

    • 谢谢,这真的很有帮助。但是现在,我有很多台词。问题是,这也是从坏点开始的线,不适合在一起的点。我需要在它之前运行 RANSAC,还是认为我做错了?谢谢
    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2019-03-08
    • 2016-12-24
    • 2017-04-18
    • 2011-08-03
    • 2014-05-11
    相关资源
    最近更新 更多