我有一张图片,使用cv2.imread()加载后返回一个NumPy数组。然而,我需要将其传递给需要IplImage格式数据的第三方API。
我已经搜索了所有可能的资料,发现可以从IplImage转换为CvMat,并且在C++中也有相关的转换参考,但是在Python中从NumPy到IplImage的转换方法尚未找到。是否提供了可以完成此转换的函数?
你可以这样做。
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
这里是 cv2.cv.iplimage
两种应用方法:
img = cv2.imread(img_path)
img_buf = cv2.imencode('.jpg', img)[1].tostring()
只需读取图像文件:
img_buf = open(img_path, 'rb').read()