Совпадение шаблона с python opencv с включенным режимом графического процессора - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь в течение нескольких дней создавать шаблоны соответствия cv2 с преобразованными изображениями UMat, чтобы код работал на графическом процессоре, но когда я передаю изображения UMat, код завершается ошибкой.

Вот код:

from PIL import Image, ImageFilter, ImageGrab
import cv2

name = "template.png"
template = Image.open(name)
temp1 = cv2.cvtColor(np.array(template), cv2.COLOR_BGR2RGB)
temp1 = cv2.UMat(temp1) #1

entireScreenPIL = ImageGrab.grab()
entireSPIL = cv2.cvtColor(np.array(entireSPIL), cv2.COLOR_BGR2RGB)
entireSPIL = cv2.UMat(entireSPIL) #2

method = eval('cv2.TM_SQDIFF_NORMED')
res = cv2.matchTemplate(screenshot, template, method)
loc = np.where(res <= threshold) 

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
    bestFit = min_loc
else:
    bestFit = max_loc

count = 0
points = []
for pt in zip(*loc[::-1]):
    count += 1
    points.append(pt)
return count, points, bestFit, min_val

идеально работает, если нет преобразования UMat (# 1 и # 2) ... Сообщение об ошибке, если преобразование UMat содержит следующее сообщение:

TypeError: неупорядоченные типы: cv2.UMat () <= float ( ) </p>

Спасибо за ответ

...