【发布时间】:2012-04-12 09:25:07
【问题描述】:
编辑:原标题“将 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
由于 cv2 默认使用 NumPy 数组,因此不再有任何 cv::Mat 构造函数,并且 NumPy 没有函数可以转换为 cv::Mat 数组。
有什么想法吗?
【问题讨论】:
-
是的,这已经被回答了——你实际上并没有错过第二个参数,而是第一个。然而,我来到这里还有一个问题:不是每个
uint8类型的numpy.ndarray都可以显示。我做了一个切片,以获取图像的单个通道,例如red = frame[:,:,0],然后在imshow中出现异常。我怀疑这是因为稀疏。red = frame[:,:,0].copy()已修复。
标签: python opencv numpy matplotlib