2012-07-17 13 views
7

Tengo una imagen que cargo usando cv2.imread(). Esto devuelve una matriz NumPy. Sin embargo, debo pasar esto a una API de terceros que requiera los datos en formato IplImage.OpenCV: conversión de NumPy a IplImage en Python

He revisado todo lo que pude y he encontrado instancias de conversión de IplImage a CvMat, y he encontrado algunas referencias a la conversión en C++, pero no de NumPy a IplImage en Python. ¿Hay una función que se proporciona que puede hacer esta conversión?

+0

¿es correcto con Numpy -> cvMat? –

Respuesta

14

Puede hacer esto.

source = cv2.imread() # source is numpy array 
bitmap = cv.CreateImageHeader((source.shape[1], source.shape[0]), cv.IPL_DEPTH_8U, 3) 
cv.SetData(bitmap, source.tostring(), 
      source.dtype.itemsize * 3 * source.shape[1]) 

bitmap aquí es cv2.cv.iplimage

+0

Gracias Froyo, esto me da una imagen Ipl, pero la imagen parece estar dañada. En lugar de usar cv.CreateImageHeader y cv.SetData, estoy usando cv2.cv.CreateImageHearder y cv2.cv.SetData, ¿cree que eso hace la diferencia? – steve8918

+3

En realidad lo descubrí, el mosaico que estaba tratando de convertir era binario, no BGR, por eso era que se estaba volviendo corrupto. Así que cambié 3 a 1 y funcionó perfectamente. Gracias de nuevo por señalarme en la dirección correcta. En caso de que alguien más lo necesite, el Cookbook OpenCV tiene información sobre cómo convertir en http://opencv.willowgarage.com/wiki/PythonInterface/ – steve8918

Cuestiones relacionadas