【发布时间】:2014-11-18 13:39:28
【问题描述】:
我有两张几乎相似的图片,不同之处在于第二张图片中的形状略有不同。大多数时候更小,但可以更大。此外,一张图像中的形状计数范围可以从 ~10 到 >100,并且可以彼此相对接近。 它看起来像这样(注意:两个图像都不是透明的):
黑色三角形是图像 1,灰色三角形是图像 2。
现在我想在图像 1 的边缘添加一个预定义的边距(此处为 3px - 到轮廓的两侧),并测试第二张图像的边缘是否与第一张图像在“相同”范围内。如果没有,请直观地显示:
左上角:两张图片之间的细微差别(用红色轮廓表示)
右下:“相同”的边缘 -> 没有区别
我怎样才能最好地做到这一点?
我在 C++ 中使用 OpenCV
【问题讨论】:
-
通过交叉比较决定绘制红色轮廓或不应用每个轮廓的区域。先找到每个的外轮廓和内轮廓,然后计算面积,然后比较决定,需要FindContours()和contourArea()
标签: c++ opencv matching contour edge-detection