利用Python+OpenCV实现截图匹配图像,支持自适应缩放、灰度匹配、区域匹配、匹配多个结果
使用Python和OpenCV实现截图匹配的示例代码如下:
import cv2
import numpy as np
def match_template(source_image, template_image, method=cv2.TM_CCOEFF_NORMED):
# 获取模板图像的尺寸
w, h = template_image.shape[:-1]
# 使用模板匹配
result = cv2.matchTemplate(source_image, template_image, method)
# 设置匹配阈值
threshold = 0.8
# 取匹配结果中的最小和最大位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 如果匹配得分超过阈值,则提取匹配区域
if max_val > threshold:
# 计算匹配区域的矩形边界
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
# 画出匹配区域矩形
cv2.rectangle(source_image, top_left, bottom_right, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Matched Result', source_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 读取源图像和模板图像
source_image = cv2.imread('source.jpg')
template_image = cv2.imread('template.jpg')
# 执行截图匹配
match_template(source_image, template_image)
这段代码首先定义了一个match_template
函数,它使用OpenCV的cv2.matchTemplate
函数来执行模板匹配,并通过传入不同的method
参数来支持不同的匹配方法(如灰度匹配、宽松匹配、精确匹配等)。函数会计算匹配结果,并根据设置的阈值来确定是否绘制匹配区域的矩形框。
在实际使用时,需要将'source.jpg'
和'template.jpg'
替换为实际的图像文件路径。此外,可以根据需要调整匹配方法和阈值来改善匹配效果。
评论已关闭