Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV TypeError:参数'应为cv::UMat;src';-这是什么?_Python_Opencv_Typeerror_Src - Fatal编程技术网

Python OpenCV TypeError:参数'应为cv::UMat;src';-这是什么?

Python OpenCV TypeError:参数'应为cv::UMat;src';-这是什么?,python,opencv,typeerror,src,Python,Opencv,Typeerror,Src,免责声明:巨大的openCV noob 回溯(最近一次呼叫最后一次): 文件“lanes2.py”,第22行,在 canny = canny(lane_image) canny中第5行的文件“lanes2.py” gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY) TypeError:参数“src”应为cv::UMat “src”到底指的是什么?是不是你自己的功能?你在里面使用OpenCV吗?如果是,请检查是否为Canny提供了合适的参数-第一个

免责声明:巨大的openCV noob

回溯(最近一次呼叫最后一次):

文件“lanes2.py”,第22行,在

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

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
TypeError:参数“src”应为cv::UMat


“src”到底指的是什么?

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

  • 类型:
  • 数据类型:
    dtype('uint8')
  • 单通道或简化:灰度,即2D数组,即其
    形状
    应为
    int
    s的2-
    tuple
    tuple
    正好包含2个整数)
您可以分别通过打印进行检查

type(variable_name)
variable_name.dtype
variable_name.shape
variable\u name
替换为作为第一个参数输入到
Canny
的变量名

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

UMat是为CPU和OpenCL实现编写一个代码的帮助的一部分。

src
cv2.cvtColor
的第一个参数

您得到的错误是因为它不是正确的表单
cv2.Umat()
在功能上等同于
np.float32()
,因此最后一行代码应为:

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

问题不在于你的代码这很好:

gray = cv2.cvtColor(imgUMat, cv2.COLOR_RGB2GRAY)
问题在于imgUMat是
None
,因此在加载图像时可能会出错:

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

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

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

当from包无法识别帧或给出空帧时,有时会出现此错误。在这种情况下,解决方案将是找出为什么会有如此糟糕的帧或使用opencv2中的标准视频捕获(0)方法。以下内容可从
numpy中使用:

import numpy as np 
image = np.array(image)
只需在开始时添加以下内容:
image=cv2.imread(image)

我通过写入/读取文件来解决这个问题。我猜cv.imread会把它转换成它需要的格式。这段代码是为anki Vector SDK程序编写的,不过你明白了

tmpImage=robot.camera.latest\u image.raw\u image.save('temp.png')

pilImage=cv.imread('temp.png')

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

,该类型指的是图像的预期数据类型

“image”。如果使用ImageGrab,aType('float32')应该可以解决您的问题


验证您的映像是否由于错误的
bbox

而不是0x0区域。验证应用程序根文件夹是否与您尝试运行的文件相同。

这是不足以调试错误的信息。简而言之,
src
指的是您传递给函数的输入矩阵/图像。这对我很有用(python3.7)。绘制图像是成功的,并且图像似乎没有以任何方式损坏。但在尝试使用cv2.resize(图像,(1280720))时仍然出现此错误。如上图所示,在使用numpy向ndarray强制转换后,问题已解决。由于摄像头损坏,视频捕获(0)无法识别帧。不是吗????请澄清此疑问这给了我此错误
UMat()缺少必需的参数“ranges”(位置2)