steve8918
steve8918

Reputation: 1860

OpenCV: Converting from NumPy to IplImage in Python

I have an image that I load using cv2.imread(). This returns an NumPy array. However, I need to pass this into a 3rd party API that requires the data in IplImage format.

I've scoured everything I could and I've found instances of converting from IplImage to CvMat,and I've found some references to converting in C++, but not from NumPy to IplImage in Python. Is there a function that is provided that can do this conversion?

Upvotes: 8

Views: 10669

Answers (2)

jiangze ren
jiangze ren

Reputation: 29

2-way to apply:

  1. img = cv2.imread(img_path) img_buf = cv2.imencode('.jpg', img)[1].tostring()

  2. just read the image file: img_buf = open(img_path, 'rb').read()

Upvotes: 0

Froyo
Froyo

Reputation: 18487

You can do like this.

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 here is cv2.cv.iplimage

Upvotes: 15

Related Questions