不知道如何解决此错误-Umat len(opencv-python)

时间:2019-04-16 15:22:26

标签: python python-3.x opencv

我在这段代码中捕获图像并在其上找到第一个黑色像素,然后中断循环。我在屏幕上有一个坐标数组(另一个数组),我想找到黑色像素,但是我无法解决此错误。

免责声明:我是使用此库的菜鸟。

我试图像之前建议的那样创建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'

这应该解决起来很简单,但我解决不了。

谢谢。

1 个答案:

答案 0 :(得分:0)

需要这样做:

pic = cv2.cvtColor(cv2.UMat(thegame), cv2.COLOR_RGB2GRAY)