如何将通过http post收到的png图像加载到OpenCV IplImage格式

时间:2010-07-09 12:12:37

标签: image-processing opencv bytearray iplimage

我正在编写一个网络服务器,它接收图像并进行一些处理并回复结果。

图像采用png格式。它通过POST使用PHP作为byte []接收。我必须将此byte []转换为OpenCV IplImage格式。为完成这项工作,我应该遵循哪些步骤?

我目前正在这样做的方法是读取图像并将其保存在硬盘驱动器上,并将文件路径解析为OpenCV cvLoadImage()函数。我相信按照上段描述的方式效果比这更有效。

或者有没有办法将byte []直接解析为某些OpenCV函数而不尝试将其自身转换为IplImage格式?

谢谢..

1 个答案:

答案 0 :(得分:1)

我认为这是不可能的。

从POST请求获得的字节是存储在文件中的实际字节数。由于PNG是压缩格式,因此需要首先解压缩这些字节。 (IplImage存储图像的未压缩字节)

您可以自己编写PNG解压缩例程或使用一些库(检查libpng)。

获得解压缩的字节后,您需要设置IplImage结构。

使用cvCreateImageHeader创建适当大小和深度的图像,并将image->数据指针设置为解压缩数据。

确保解压缩的数据为BGR格式...交错(一个蓝色字节,一个绿色字节,一个红色字节,依此类推)。