opencv 使用 GPU 加速

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%