Estoy tratando de convertir una matriz 2D Numpy, que representa una imagen en blanco y negro, en una matriz OpenCV de 3 canales (es decir, una imagen RGB).Convertir Numpy Array a OpenCV Array
Basado en code samples y the docs Estoy tratando de hacerlo a través de Python como:
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)
Sin embargo, la llamada a CvtColor() está lanzando la siguiente excepción de nivel 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
¿Qué estoy haciendo mal?
De los documentos para 'CvtColor'" src: la imagen de origen, sin signo de 8 bits, sin signo de 16 bits (CV_16UC ...) o coma flotante de precisión simple ". Noté que tu matriz numpy es 'np.uint32'. Esto puede explicar 'OpenCV Error: Image step is wrong() en cvSetData'. Noto que las muestras de código usan un tipo de datos diferente: ver 'vis = np.zeros ((max (h1, h2), w1 + w2), np.uint8)'. –