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

aut*_*cat 10 python opencv src typeerror

免责声明:巨大的openCV新手

追溯(最近一次通话):

在第22行的文件“ lanes2.py”中

canny = canny(lane_image)
Run Code Online (Sandbox Code Playgroud)

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

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
Run Code Online (Sandbox Code Playgroud)

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

“ src”到底指的是什么?

Avi*_*dan 18

可以从以下使用numpy

import numpy as np 
image = np.array(image)
Run Code Online (Sandbox Code Playgroud)


Var*_*hur 9

src是的第一个参数cv2.cvtColor

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

gray = (np.float32(imgUMat), cv2.COLOR_RGB2GRAY)
Run Code Online (Sandbox Code Playgroud)


Max*_*ian 9

不是你的代码是问题,这完全没问题:

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
Run Code Online (Sandbox Code Playgroud)

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

imgUMat = cv2.imread("your_image.jpg")
Run Code Online (Sandbox Code Playgroud)

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


Nuz*_*hny 5

gray = cv2.cvtColor(cv2.UMat(imgUMat), cv2.COLOR_RGB2GRAY)
Run Code Online (Sandbox Code Playgroud)

UMat是透明API(TAPI)的一部分,有助于为CPU和OpenCL实现编写一个代码。

  • 这给了我这个错误`UMat()缺少必需的参数'范围'(pos 2)` (6认同)

小智 5

np.ascontiguousarray使用以下命令将图像矩阵转换为连续数组:

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


Daw*_*weo 2

canny你自己的功能吗?你在里面使用OpenCV 的Canny吗?如果是,请检查您是否提供合适的参数Canny- 第一个Canny参数应满足以下条件:

  • 类型:<type 'numpy.ndarray'>
  • 数据类型:dtype('uint8')
  • 是单通道或简单:灰度,即二维数组,即它shape应该是 2- tupleof ints (tuple恰好包含 2 个整数)

分别打印即可查看

type(variable_name)
variable_name.dtype
variable_name.shape
Run Code Online (Sandbox Code Playgroud)

替换variable_name为您作为第一个参数提供的变量名称Canny