繁体   English   中英

查找图像包含另一个图像

[英]Find image contain another image

我尝试使用 matchTemplate() function 和 minMaxLoc() function 在另一个图像中查找 position 图像,但它无法正常工作,因为容器图像与图像的角度不同。

这是我对原始图像所做的,它与 matchTemplate() function 和 minMaxLoc() 一起工作正常。 但是如果我旋转图像。 没有什么是认可的。

我试图在图像中找到硬币

这是我用来识别硬币的代码:

img_rgb = cv.imread('mario.png')
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread('mario_coin.png',0)
w, h = template.shape[::-1]
res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv.imwrite('res.png',img_rgb)

我的图像旋转 30 度:

在此处输入图像描述

谁能帮我这个?

看来你正在尝试这个例子 matchTemplate()有一些缺点。 其中之一是旋转问题。 这些动态功能可以使用其他技术,如SIFTSURF

但是如果你真的想继续模板匹配,你应该努力。 您可以生成源图像的所有可能旋转,并且可以尝试对所有图像进行模板匹配。 这是一种粗暴的方式,但可以工作。

你也可以检查这个这个

祝你好运!!!

由于旋转,匹配值会大大降低。 对 cv.matchTemplate 使用较低的阈值。

或者如果您之前知道旋转度数,请旋转模板(mario_coin.png)并进行模板匹配。

尝试不同的方式。

例如,您可以计算 360 个模板,每个模板一个硬币旋转 1 度。 在遍历 360 模板的同时进行匹配并找到最佳匹配。

整个过程,硬币模板的旋转和匹配,当然要多花 360 倍的时间,但我认为你应该找到位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM