OpenCV,功能与教程中的代码相匹配
我从OpenCV教程页面复制了功能匹配与FLANN的代码,并做了以下更改:
我修改了“良好匹配”的支票。 代替
if( matches[i].distance < 2*min_dist )
我用了
if( matches[i].distance <= 2*min_dist )
否则,当比较图像与自身时,我会得到零匹配的好匹配。
绘制关键点时修改参数:
drawMatches( img1, k1, img2, k2,
good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),
vector<char>(), DrawMatchesFlags::DEFAULT);
我从INRIA-Holidays数据集的爱尔兰文件夹中的所有图像中提取SIFT。 然后,我将每幅图像与其他图像进行比较并绘制匹配。
然而,我从来没有遇到过一个奇怪的问题,那就是我以前使用过的其他SIFT / Matcher实现:
有没有人使用OpenCV教程中的相同代码,并可以报告我的不同体验?
检出matcher_simple.cpp示例。 它使用了一个似乎工作得很好的强力匹配器。 代码如下:
// detecting keypoints
SurfFeatureDetector detector(400);
vector<KeyPoint> keypoints1, keypoints2;
detector.detect(img1, keypoints1);
detector.detect(img2, keypoints2);
// computing descriptors
SurfDescriptorExtractor extractor;
Mat descriptors1, descriptors2;
extractor.compute(img1, keypoints1, descriptors1);
extractor.compute(img2, keypoints2, descriptors2);
// matching descriptors
BFMatcher matcher(NORM_L2);
vector<DMatch> matches;
matcher.match(descriptors1, descriptors2, matches);
// drawing the results
namedWindow("matches", 1);
Mat img_matches;
drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches);
imshow("matches", img_matches);
waitKey(0);
链接地址: http://www.djcxy.com/p/89737.html
上一篇: OpenCV, feature matching with code from the tutorial
下一篇: How to use the OpenCV C++ specific sample on the Android platform?