我正在编写一个网络服务器,它接收图像并进行一些处理并回复结果。
图像采用png格式。它通过POST使用PHP作为byte []接收。我必须将此byte []转换为OpenCV IplImage格式。为完成这项工作,我应该遵循哪些步骤?
我目前正在这样做的方法是读取图像并将其保存在硬盘驱动器上,并将文件路径解析为OpenCV cvLoadImage()函数。我相信按照上段描述的方式效果比这更有效。
或者有没有办法将byte []直接解析为某些OpenCV函数而不尝试将其自身转换为IplImage格式?
谢谢..
答案 0 :(得分:1)
我认为这是不可能的。
从POST请求获得的字节是存储在文件中的实际字节数。由于PNG是压缩格式,因此需要首先解压缩这些字节。 (IplImage存储图像的未压缩字节)
您可以自己编写PNG解压缩例程或使用一些库(检查libpng)。
获得解压缩的字节后,您需要设置IplImage结构。
使用cvCreateImageHeader创建适当大小和深度的图像,并将image->数据指针设置为解压缩数据。
确保解压缩的数据为BGR格式...交错(一个蓝色字节,一个绿色字节,一个红色字节,依此类推)。