python - OpenCV 绘制非匹配点

标签 python opencv sift

我关注了OpenCV Feature Detection and Description tutorial并使用OpenCV中的SIFT等算法寻找两幅图像之间的匹配特征点。据我了解,这些算法可以找到两张图像之间的相似区域。但我对识别不同或不相似的区域很感兴趣。

我如何在两个图像上绘制所有不匹配的特征点?此外,我能否在这些不匹配点周围绘制边界,以便能够显示 2 个图像中的哪些区域不同?

我在 Windows 7 上使用 Python 代码并从最新的 OpenCV 源构建。

最佳答案

  1. 在两张图片上绘制所有不匹配的特征点:

一旦您了解了 Matcher objects 的结构,这项任务就非常简单了来自两个描述符的匹配 (matches = bf.match(des1,des2))。与此问题相关的两个 Matcher 对象的属性如下:

  • DMatch.trainIdx:火车描述符中的描述符索引(或火车图像中的关键点)
  • DMatch.queryIdx:查询描述符中描述符(或查询图像的关键点)的索引

然后,了解这些信息,正如@uzair_syed 所说,这只是一个 simple list operations task .


  1. 在非匹配点周围绘制边界:

为了实现这一点,我会做这样的事情:

  • 为每个不匹配的点创建一个带有白色像素的黑色蒙版
  • 根据非匹配点簇的密度扩张具有大内核(即 15 x 15 像素)的掩码。
  • 腐 eclipse 具有相同内核大小的掩码。
  • 最后,在掩码上应用findContours 函数来获取非匹配点的边界。

更多信息,你可以看看这个question and its answer .

希望它能让您走上正轨!

关于python - OpenCV 绘制非匹配点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43775842/

相关文章:

python - 使用 Scrapy/Splash 抓取 Google 图像 - 重定向

python - Python中的生日悖论与蒙特卡罗方法?

c++ - 编译时 SIFT 代码 (C++) 中的 undefined reference

opencv - OpenCV 中的高效矩阵复制

java - OpenCV Android - 无法解析相应的 JNI 函数

c++ - OpenCV 中的自定义 SIFT 检测器

python - 全局名称 'SIFT' 未在 python 中定义 (Pi 3 B)

python - web.py 脚本一直说, "' return'outside function”

python - 如何将类返回值与 float 或整数进行比较?

python - opencv和spyder ipython控制台卡住