我正在尝试将表示黑白图像的2D Numpy数组转换为3通道OpenCV数组(即RGB图像)。
基于code samples和the docs我试图通过Python这样做:
import numpy as np, cv
vis = np.zeros((384, 836), np.uint32)
h,w = vis.shape
vis2 = cv.CreateMat(h, w, cv.CV_32FC3)
cv.CvtColor(vis, vis2, cv.CV_GRAY2BGR)
但是,对CvtColor()的调用引发了以下cpp级别的异常:
OpenCV Error: Image step is wrong () in cvSetData, file /build/buildd/opencv-2.1.0/src/cxcore/cxarray.cpp, line 902
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.1.0/src/cxcore/cxarray.cpp:902: error: (-13) in function cvSetData
Aborted
我做错什么了?
您的代码可以修复如下:
简要说明:
np.uint32
OpenCV不支持数据类型(它支持uint8
,int8
,uint16
,int16
,int32
,float32
,float64
)cv.CvtColor
无法处理numpy数组,因此两个参数都必须转换为OpenCV类型。cv.fromarray
执行此转换。cv.CvtColor
的两个参数的深度必须相同。所以我将源类型更改为32位浮点,以匹配ddestination。另外,我建议您使用较新版本的OpenCV python API,因为它使用numpy数组作为主要数据类型:
这就是我的工作。。。
相关问题 更多 >
编程相关推荐