【发布时间】:2011-11-27 02:23:27
【问题描述】:
我正在尝试将表示黑白图像的 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
我做错了什么?
【问题讨论】:
-
来自
CvtColor的文档“src – 源图像,8 位无符号、16 位无符号 (CV_16UC...) 或单精度浮点”。我注意到你的 numpy 数组是np.uint32。这可以解释OpenCV Error: Image step is wrong () in cvSetData。我注意到代码示例使用了不同的数据类型:请参阅vis = np.zeros((max(h1, h2), w1+w2), np.uint8)。
标签: python numpy opencv image-processing