python - 如何在另一个图像中找到不同大小的图像(OpenCV Python)
问题描述
我正在尝试创建一个程序来识别图像('template.png')是否在另一个(template.png)中。
这是我到目前为止所拥有的:
import cv2
import numpy as np
methods = {1: cv2.TM_CCOEFF, 2: cv2.TM_CCOEFF_NORMED, 3: cv2.TM_CCORR,
4: cv2.TM_CCORR_NORMED, 5: cv2.TM_SQDIFF, 6: cv2.TM_SQDIFF_NORMED}
for n, m in methods.items():
img_rgb = cv2.imread('image.jpg')
template = cv2.imread('template.png')
w, h = template.shape[:-1]
res = cv2.matchTemplate(img_rgb, template, m)
threshold = .9
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv2.imwrite(f'{n}_result.png', img_rgb)
如果我截取“image.jpg”的一小部分并将其用作“template.png”,这目前有效,但是当“template.png”的大小不同时它不起作用。
template.png 文件可能以与其原始大小不同的大小出现在图像中。尽管图像大小,我如何检查图像是否包含在内?
编辑:有没有办法使用监督机器学习来重复选择“image.jpg”上的元素并让它慢慢地更好地理解它在寻找什么?
解决方案
推荐阅读
- python - 本地导入的导入错误产生“没有已知父包的尝试相对导入”
- mysql - 为什么我不能将 INET_ATON 结果存储到 VARBINARY(4)?
- mongodb - 观察最后插入的 MongoDB GridFS 块
- javascript - 如何计算到达某一天的剩余时间(以天、小时、分钟和秒为单位)?
- c# - unity:sceneLoaded 后什么都看不到
- excel - excel中是否有一个功能可以帮助我增加和减少货币价值的分数到特定的小变化?
- oracle - SQL Server Polybase 使用列数据类型 TIMESTAMP WITH TIME ZONE 向 Oracle 创建外部表错误
- pandas - python中的子图,带有使用pandas ans seaborn的多个折线图
- open-policy-agent - OPA PrepareForEval 时间呈指数增长
- python - 如何通过控制台输入杀死线程