Mar*_*ett 13 python opencv numpy matplotlib
编辑:原始标题"将numpy数组转换为cvmat"是一个错误 - OpenCV不是有用的错误消息,我没有阅读文档!
使用OpenCV 2,IPython现在默认使用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
Run Code Online (Sandbox Code Playgroud)
由于cv2
默认情况下使用NumPy数组,因此不再有任何cv :: Mat构造函数,并且NumPy没有转换为cv::Mat
数组的函数.
有任何想法吗?
zar*_*hur 19
该函数具有以下文档字符串:imshow(winname, mat) -> None
.您可以通过cv2.imshow.__doc__
在解释器中键入来查看文档字符串.
试试cv2.imshow('Image', cvimage)
.
tl; dr:在原始问题中,"窗口名称"的第一个参数丢失了."imshow"有两个参数,只提供了一个参数.
Ste*_*eve 15
这个问题在技术上询问如何将NumPy数组(类似于CV2数组)转换为Mat对象(CV).对于任何有兴趣的人,可以通过以下方式完成:
mat_array = cv.fromarray(numpy_array)
Run Code Online (Sandbox Code Playgroud)
其中mat_array是Mat对象,numpy_array是NumPy数组或图像.我建议尽可能远离旧的CV结构.Numpy数组比原生Python中的实现提供了更好的性能