2012-07-17 9 views
7

Yüklediğim bir resim var cv2.imread(). Bu bir NumPy dizisini döndürür. Ancak, bu verileri IplImage biçiminde gerektiren bir 3. parti API'ye aktarmam gerekiyor.OpenCV: Python'da NumPy'den IplImage'a dönüştürme

Yapabileceğim her şeyi inceledim ve IplImage'dan CvMat'a dönüştürme örneklerini buldum ve C++'da dönüştürme için bazı referanslar buldum, ancak Python'daki NumPy'den IplImage'a değil. Bu dönüşümü gerçekleştirebilecek bir işlev var mı?

+0

o Numpy uyar mı olduğunu -> cvMat? –

cevap

14

Bunu nasıl yapabilirsiniz? Burada

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]) 

bitmapcv2.cv.iplimage

+0

Teşekkürler Froyo, bu bana bir IplImage verir, ancak görüntü bozuk görünüyor. Cv.CreateImageHeader ve cv.SetData kullanmak yerine, cv2.cv.CreateImageHearder ve cv2.cv.SetData kullanıyorum, bunun bir fark yarattığını düşünüyor musunuz? – steve8918

+3

Aslında bunu anladım, dönüştürmeye çalıştığım karo BGR değil, ikiliydi, bu yüzden bozuk oluyordu. Böylece 3'e 1 değiştirdim ve mükemmel çalıştı. Beni doğru yönde işaret ettiğin için teşekkürler. Başka birinin buna ihtiyacı varsa, OpenCV Yemek Kitabının http://opencv.willowgarage.com/wiki/PythonInterface/ adresinden nasıl dönüştürüleceği hakkında bilgi vardır. – steve8918