Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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 cv2::imshow的参数_Python_Opencv_Numpy_Matplotlib - Fatal编程技术网

Python cv2::imshow的参数

Python cv2::imshow的参数,python,opencv,numpy,matplotlib,Python,Opencv,Numpy,Matplotlib,编辑:原始标题“将numpy数组转换为cvmat”是一个错误-OpenCV的错误消息不太有用,我没有阅读文档 对于2,现在默认情况下使用NumPy数组 cvimage = cv2.imread("image.png") #using OpenCV 2 type(cvimage) Out: numpy.ndarray #dtype is uint8 pltimage = plt.imread("image.png") #using Matplotlib type(pltimage) Out:

编辑:原始标题“将numpy数组转换为cvmat”是一个错误-OpenCV的错误消息不太有用,我没有阅读文档

对于2,现在默认情况下使用NumPy数组

cvimage = cv2.imread("image.png") #using OpenCV 2
type(cvimage)
Out: numpy.ndarray  #dtype is uint8

pltimage = plt.imread("image.png")  #using Matplotlib
type(pltimage)
Out: numpy.ndarray   #dtype is float

plt.imshow(cvimage)  # works great

cv2.imshow(cvimage)
TypeError: Required argument 'mat' (pos 2) not found
由于默认情况下
cv2
使用NumPy数组,因此不再存在任何cv::Mat构造函数,并且NumPy没有转换为
cv::Mat
数组的函数


有什么想法吗?

该函数有以下文档字符串:
imshow(winname,mat)->None
。 您可以通过在解释器中键入
cv2.imshow.\uuu doc\uuu
来查看文档字符串

尝试
cv2.imshow('Image',cvimage)


tl;dr:在原来的问题中,“窗口名”的第一个参数丢失了。“imshow”接受两个参数,只提供了一个参数。

Mat
对象是必需的,因为C/C++缺少矩阵的标准/本机实现


然而,
numpy
array
是该功能的完美替代品。因此,
cv2
模块在文档中指示矩阵的任何位置都接受
numpy.array
s。

技术上的问题是如何将numpy数组(类似于cv2数组)转换为Mat对象(CV)。对于任何感兴趣的人,可以通过以下方式完成:

mat_array = cv.fromarray(numpy_array)
其中mat_数组是mat对象,numpy_数组是numpy数组或图像。
我建议尽可能远离旧的简历结构。Numpy数组提供了比本机Python实现更好的性能

当我执行
cvimage=cv2.imread('image.png')
后接
cv2.imshow('image',cvimage)
时,不会返回错误并显示图像。无需导入Numpy,返回的类型是
numpy.ndarray
。您缺少一个必需的参数,正如Neon22所说,您缺少imshow函数的第一个参数,该参数是显示图像的窗口的名称。imshow可以很好地处理以numpy数组表示的图像。是的,这一点已经得到了回答-您实际上并没有遗漏第二个参数,而是遗漏了第一个参数。然而,我来到这里还有一个问题:并非所有
numpy.ndarray
类型的
uint8
都可以显示。我制作了一个切片,以获得图像的单个通道,如
red=frame[:,:,0]
,然后在
imshow
中得到了一个异常。我怀疑这是因为稀疏<代码>红色=框架[:,,0 ] .Copy[] /Cuff>固定。这是针对CV而不是CV2,我们应该如何在C++和CV2中这样做?