Sto provando a convertire un array Numpy 2D, che rappresenta un'immagine in bianco e nero, in un array OpenCV a 3 canali (ovvero un'immagine RGB).Conversione di Numpy Array su OpenCV Array
Sulla base code samples e the docs sto cercando di farlo tramite Python come:
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)
Tuttavia, la chiamata a CvtColor() sta gettando il seguente livello cpp Eccezione:
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
Cosa sto sbagliando?
Da i documenti per 'CvtColor'" src - L'immagine sorgente, senza segno a 8 bit, senza segno a 16 bit (CV_16UC ...) o virgola mobile a precisione singola ". Ho notato che il tuo array numpy è 'np.uint32'. Questo potrebbe spiegare 'Errore OpenCV: il passaggio Immagine è errato() in cvSetData'. Osservo che gli esempi di codice usano un tipo di dati diverso: si veda 'vis = np.zeros ((max (h1, h2), w1 + w2), np.uint8)'. –