OpenCV:在 Python 中从 NumPy 转换为 IplImage

OpenCV: Converting from NumPy to IplImage in Python

我有一个使用 cv2.imread() 加载的图像。这将返回一个 NumPy 数组。但是,我需要将其传递给需要 IplImage 格式数据的第 3 方 API。

我已经尽我所能搜索了所有内容,并找到了从 IplImage 转换为 CvMat 的实例,并且我发现了一些关于在 C 中转换的参考,但不是从 NumPy 到 Python 中的 IplImage。是否提供了可以进行这种转换的函数?


你可以这样做。

1
2
3
4
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()