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

发布于 2024-09-08 15:39:46 字数 309 浏览 2 评论 0原文

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

该图像为 png 格式。使用 PHP 通过 POST 以 byte[] 形式接收它。我必须将此 byte[] 转换为 OpenCV IplImage 格式。我应该遵循哪些步骤来完成此任务?

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

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

谢谢..

I am writing a webserver which receives an image and do some processing and replys with results.

The image is in the png format. It is received as a byte[] via POST using PHP. I have to convert this byte[] to OpenCV IplImage format. What are the steps I should follow to get this done?

The way I am currently doing it is reading the image and saving it on the hard drive and parse the file path to OpenCV cvLoadImage() function. I believe doing the way described in the above paragraph is much efficiant than this.

Or is there a way to parse the byte[] directly to some OpenCV function without trying to convert it to IplImage format myself?

Thank you..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城烟雨 2024-09-15 15:39:46

我相信这是不可能的。

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

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

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

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

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

I believe that is not possible.

The bytes you get from the POST request are the actual bytes stored in the file. Because PNG is a compressed format, these bytes need to be decompressed first. (IplImage stores uncompressed bytes of the image)

You could write PNG decompression routines yourself or use some library (check libpng).

Once you have the decompressed bytes, you'll need to setup the IplImage structure.

use cvCreateImageHeader to create an image of the appropriate size and depth, and set the image->data pointer to the decompressed data.

Make sure the decompressed data is in BGR format... interleaved (one blue byte, one green byte, one red byte, and so on).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文