我在这段代码中捕获图像并在其上找到第一个黑色像素,然后中断循环。我在屏幕上有一个坐标数组(另一个数组),我想找到黑色像素,但是我无法解决此错误。
免责声明:我是使用此库的菜鸟。
我试图像之前建议的那样创建Umat:
pic = cv2.cvtColor(cv2.UMat(pic), cv2.COLOR_RGB2GRAY)
但出现此错误:
for y in reversed(range(len(pic))): TypeError: object of type 'cv2.UMat' has no len()
这是代码:
import cv2 as cv2
from PIL import ImageGrab
import numpy as np
coords = [[1,2], [3,4], [5,6], [7,8]]
for coords in coords:
# print(coords)
pic = np.array(ImageGrab.grab(bbox=coords))
pic = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY)
for y in reversed(range(len(pic))):
for x in range(len(pic[y])):
if pic[y][x] == 0:
print("found first one")
else:
continue
break
我希望代码能打印出“找到的第一个”的4倍,因为所有坐标上都有黑色像素,但是我遇到了这个错误:
thegame = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY)
TypeError: Expected cv::UMat for argument 'src'
这应该解决起来很简单,但我解决不了。
谢谢。
答案 0 :(得分:0)
需要这样做:
pic = cv2.cvtColor(cv2.UMat(thegame), cv2.COLOR_RGB2GRAY)