OpenCV TypeError:参数'src'的预期cv :: UMat是什么?

时间:2019-01-18 07:54:29

标签: python opencv typeerror src

免责声明:巨大的openCV新手

  

回溯(最近通话最近一次):

     

中的文件“ lanes2.py”,第22行
canny = canny(lane_image)
     

文件“ lanes2.py”,第5行,在canny中

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
     

TypeError:参数'src'预期的cv :: UMat

“ src”到底指的是什么?

14 个答案:

答案 0 :(得分:2)

gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)

UMat是Transparent API (TAPI)的一部分,而不是帮助为CPU和OpenCL实现编写一个代码。

答案 1 :(得分:2)

可以在numpy中使用以下内容:

import numpy as np 
image = np.array(image)

答案 2 :(得分:1)

canny是您自己的功能吗?您是否在其中使用了OpenCV中的Canny?如果是,请检查是否为Canny输入合适的参数-第一个Canny参数应满足以下条件:

  • 类型:<type 'numpy.ndarray'>
  • dtype:dtype('uint8')
  • 是单通道还是单指:灰度,是2D数组,即其shape应该是tuple s中的2-int({{1 }}仅包含2个整数)

您可以分别通过打印进行检查

tuple

用您作为type(variable_name) variable_name.dtype variable_name.shape 的第一个参数输入的变量名称替换variable_name

答案 3 :(得分:1)

srccv2.cvtColor的第一个参数。

您遇到的错误是因为它的格式不正确。 cv2.Umat()在功能上等效于np.float32(),因此您的最后一行代码应为:

gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)

答案 4 :(得分:1)

特定的OpenCV函数不支持某些dtype。例如,dtype np.uint32的输入会产生此错误。尝试将输入转换为受支持的dtype(例如np.int32或np.float32)

答案 5 :(得分:0)

不是您的代码就是完美的问题:

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)

问题是imgUMat是None,因此您在加载图像时可能犯了一个错误:

imgUMat = cv2.imread("your_image.jpg")

我怀疑您输入的图像路径错误。

答案 6 :(得分:0)

这是一个常规错误,当您在所使用的数据类型之间存在不匹配时,有时会抛出该错误。例如,我尝试使用opencv调整图像大小,它给出了相同的错误。 Here是关于它的讨论。

答案 7 :(得分:0)

有时,当videostream包中的imutils无法识别框架或给出空白框架时,会出现此错误。在这种情况下,解决方案将弄清楚为什么帧质量太差或使用opencv2中的标准VideoCapture(0)

答案 8 :(得分:0)

只需在开始时添加:     图片= cv2.imread(图片)

答案 9 :(得分:0)

我通过写/读文件来解决这个问题。我猜cv.imread会将其放入所需的格式。此代码适用于anki Vector SDK程序,但您可以理解。

tmpImage = robot.camera.latest_image.raw_image.save('temp.png')
pilImage = cv.imread('temp.png')

答案 10 :(得分:0)

是指图像的预期dtype
“ image” .astype('float32')应该可以解决您的问题

答案 11 :(得分:0)

如果使用 ImageGrab

验证您的图像不是由于不正确的 bbox 导致的 0x0 区域。

答案 12 :(得分:0)

验证应用程序根文件夹与您尝试运行的文件相同。

答案 13 :(得分:0)

使用 np.ascontiguousarray 将您的图像矩阵转换为 ascontiguousarray 如下:

gray = cv2.cvtColor(np.ascontiguousarray(imgUMat), cv2.COLOR_RGB2GRAY)