1
自动化测试过程中使用图片识别技术识别控件已经成为普遍需求。图片识别通常以HTTP的API形式提供给测试开发者,API的响应速度至关重要。
1
本文关注opencv中相关API的提速,服务端的其他提速技术不在讨论范围内。
opencv-python默认不提供GPU的支持,也就是cuda库的支持,需要自己编译。本文选用opencv 3.2.0 cuda8.0(因为官方推荐使用这两个版本),使用其他版本可能会出现编译失败的问题,如果你有信心解决具体问题,欢迎尝试。
1
图片匹配
# coding=utf-8
import cv2
import time
def match_test():
target = cv2.imread("./target.png")
template = cv2.imread("./template.jpg")
result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)
h, w = template.shape[:-1]
if maxVal > 0.5:
middle_point = (int(maxLoc[0] + w / 2), int(maxLoc[1] + h / 2))
return middle_point
else:
return None
if __name__ == '__main__':
num = 100
begin = time.time()
for i in range(num):
match_test()
print (time.time()-begin)/num
结果
CPU:0.299
GPU:0.181
提升:39.4%