我正试图在另一个图像中找到一个图像。
im = cv.LoadImage('1.png', cv.CV_LOAD_IMAGE_UNCHANGED)
tmp = cv.LoadImage('e1.png', cv.CV_LOAD_IMAGE_UNCHANGED)
w,h = cv.GetSize(im)
W,H = cv.GetSize(tmp)
width = w-W+1
height = h-H+1
result = cv.CreateImage((width, height), 32, 1)
cv.MatchTemplate(im, tmp, result, cv.CV_TM_SQDIFF)
print result
当我运行这个时,一切都执行得很好,不会抛出任何错误。但我不知道从这里该怎么办。文档说result
存储“比较结果的映射”。我试着打印,但它给了我宽度,高度和步幅。
如何使用此信息来查找一个图像是否位于另一个图像中/图像的位置?
MatchTemplate
返回相似性映射而不是位置。 然后可以使用此地图查找位置。如果您只寻找一个匹配项,则可以执行以下操作来获取位置:
然后
minLoc
有最佳匹配的位置,并且minVal
描述模板的匹配程度。您需要为minVal
设置一个阈值,以确定您是否认为此结果匹配。如果你要寻找一个以上的匹配每个图像,你需要使用算法,如非最大抑制。
这可能对你有用!:)
CCOEFF_NORMED
只是众多比较方法之一。 见:http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html 完整的名单。不确定这是不是最好的方法,但很快,对我来说很好!:)
相关问题 更多 >
编程相关推荐