[英]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 度:
谁能帮我这个?
由于旋转,匹配值会大大降低。 对 cv.matchTemplate 使用较低的阈值。
或者如果您之前知道旋转度数,请旋转模板(mario_coin.png)并进行模板匹配。
尝试不同的方式。
例如,您可以计算 360 个模板,每个模板一个硬币旋转 1 度。 在遍历 360 模板的同时进行匹配并找到最佳匹配。
整个过程,硬币模板的旋转和匹配,当然要多花 360 倍的时间,但我认为你应该找到位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.