我想将一个表示黑白图像的2D Numpy数组转换为一个3通道的OpenCV数组(即RGB图像)。
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
我做错了什么?
CvtColor
的文档中可以看到:“src-源图像,8位无符号,16位无符号(CV_16UC...)或单精度浮点数”。我注意到你的numpy数组是np.uint32
。这可能解释了OpenCV错误:cvSetData中的图像步骤错误()
。我注意到代码示例使用了不同的数据类型:请参见vis = np.zeros((max(h1, h2), w1+w2), np.uint8)
。 - Steven Rumbalski