在Python中查找大图像中图像的所有位置

2024-02-19

我扫描了一个面板,由于限制而无法显示,但我尝试“模拟”它:

这张图片模拟了我的扫描:白色背景,带有圆形黑色贴纸,每个贴纸中间都有一个白色的小圆圈。有些贴纸在扫描结果上略有不同,但形状/贴纸的类型始终相同。

现在我需要编写一个代码,能够查看该图像并显示+返回贴纸的所有位置。我能够使用 OpenCV 模板匹配找到一个位置,但这只能找到与我作为输入提供的较小图像的精确匹配。我需要同时找到所有位置。

我无法在这里或任何地方找到涵盖我的问题的主题。

我希望有人能帮帮忙。

问候, 加内什


我设法使用一个相对简单的 python 脚本来实现多对象模板匹配。

我使用下面的图片作为模板.jpg

我写的脚本如下

import cv2
import numpy as np

#load image into variable
img_rgb = cv2.imread('scan.jpg')

#load template
template = cv2.imread('template.jpg')

#read height and width of template image
w, h = template.shape[0], template.shape[1]

res = cv2.matchTemplate(img_rgb,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,255,0), 2)

img_rgb = cv2.resize(img_rgb,(800,600))
cv2.imshow("result",img_rgb)
cv2.waitKey(10000)

结果如下

然而,如果这些黑色贴纸的尺寸不太一致,你可能想使用多尺度模板匹配方法.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中查找大图像中图像的所有位置 的相关文章

随机推荐