免责声明:巨大的openCV新手
回溯(最近通话最近一次):
中的文件“ lanes2.py”,第22行
canny = canny(lane_image)
文件“ lanes2.py”,第5行,在canny中
gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
TypeError:参数'src'预期的cv :: UMat
“ src”到底指的是什么?
答案 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('uint8')
shape
应该是tuple
s中的2-int
({{1 }}仅包含2个整数)您可以分别通过打印进行检查
tuple
用您作为type(variable_name)
variable_name.dtype
variable_name.shape
的第一个参数输入的变量名称替换variable_name
。
答案 3 :(得分:1)
src
是cv2.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)