Python 通过截图匹配原图中的位置(opencv)实例攻略
本文将介绍使用Python中的OpenCV库对原图进行截图匹配,并得到该截图在原图中的位置坐标的方法。OpenCV是一个基于开源发行的跨平台计算机视觉库,常用于图像和视频的处理。
步骤一:导入依赖库
首先需要导入相关的库,在这个实例中,需要导入numpy和OpenCV库,使用命令:
import numpy as np
import cv2
步骤二:加载原图和截图
要进行截图的匹配,首先需要加载原图和截图。在这个实例中,我们要匹配的截图是一个"match.png"图片,在与此同时,我们也将加载"original.png"这个原始图片:
original = cv2.imread('original.png')
match = cv2.imread('match.png')
步骤三:获取截图在原图中的位置
获取匹配截图在原图中的位置是这个实例的重点。需要使用OpenCV的模板匹配功能进行实现。模板匹配就是在一个较大的图像中搜索另外一个模板图像的位置。
使用cv2.matchTemplate()函数实现模板匹配,并使用最大匹配函数cv2.minMaxLoc()来获取最大的相似度以及匹配位置。
result = cv2.matchTemplate(original, match, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
其中,cv2.TM_CCOEFF是OpenCV的匹配算法之一,可以提高精准度。
步骤四:在原图上标记匹配位置
得到截图在原图中的位置后,我们就可以在原图上标记出匹配的区域。使用cv2.rectangle()函数在原图中绘制一个矩形框,将截图匹配的区域框出来。
cv2.rectangle(original, top_left, bottom_right, (0,0,255), 2)
其中,(0,0,255)表示矩形框的颜色,2代表线条的宽度。
示例一
以下示例展示如何在一张草地中匹配一张草青虫的截图,并将匹配位置在原图上标记出来:
#导入库
import numpy as np
import cv2
#读取原图和截图
original = cv2.imread('grass.png')
match = cv2.imread('caterpillar.png')
#获取截图的宽高
w, h = match.shape[:-1]
#在原图中查找截图的位置
result = cv2.matchTemplate(original, match, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
#在原图上标记匹配位置
cv2.rectangle(original, top_left, bottom_right, (0,0,255), 2)
#显示原图
cv2.imshow("Result", original)
cv2.waitKey(0)
示例二
以下示例展示如何在一张白色背景中匹配一张小猫的截图,并将匹配位置在原图上标记出来:
#导入库
import numpy as np
import cv2
#读取原图和截图
original = cv2.imread('white.png')
match = cv2.imread('cat.png')
#获取截图的宽高
w, h = match.shape[:-1]
#在原图中查找截图的位置
result = cv2.matchTemplate(original, match, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
#在原图上标记匹配位置
cv2.rectangle(original, top_left, bottom_right, (0,0,255), 2)
#显示原图
cv2.imshow("Result", original)
cv2.waitKey(0)
以上就是本实例使用Python的OpenCV库实现截图匹配的详细攻略,希望对大家有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 通过截图匹配原图中的位置(opencv)实例 - Python技术站