我試圖將2D numpy的數組,表示黑和白圖像,成一個3通道的OpenCV陣列(即RGB圖像)。轉換numpy的陣列到陣列的OpenCV
基於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錯誤:圖像步驟錯誤()在cvSetData'中。我注意到代碼示例使用了不同的數據類型:參見'vis = np.zeros((max(h1,h2),w1 + w2),np.uint8)'。 –