Я пытаюсь в течение нескольких дней создавать шаблоны соответствия 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>
Спасибо за ответ