gpt4 book ai didi

Opencv - 创建png图像

转载 作者:行者123 更新时间:2023-12-02 17:52:00 25 4
gpt4 key购买 nike

作为我项目的一部分,我想使用 websockets 将图像流从嵌入式机器发送到客户端应用程序,并在 img 中显示它们标签实现流式传输。

首先,我尝试发送原始 RGB 数据(752*480*3 - 大约 1MB),但最后我在基于 RGB 图像的 javascript 中将图像编码为 png 时遇到了一些问题,所以我想尝试将我的数据编码为 PNG首先,然后使用 websockets 发送它。

问题是,我在使用 OpenCV 将我的数据编码为 PNG 时遇到了一些问题。项目中已经使用的库。

首先,一些代码:

websocketBrokerStructure.matrix = cvEncodeImage(0, websocketBrokerStructure.bgrImageToSend, 0);
websocketBrokerStructure.imageDataLeft = websocketBrokerStructure.matrix->rows * websocketBrokerStructure.matrix->cols * websocketBrokerStructure.matrix->step;
websocketBrokerStructure.imageDataSent = 0;

但在执行第二行时我遇到了奇怪的错误:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid

我有点困惑为什么我从我的代码中得到这个错误。

另外我想知道我是否理解正确:在调用 cvEncodeImage(其中 bgrImageIplImage* 具有 3 个 channel - BGR)后,我只需要遍历 data我的 CvMat 的成员获取所有 png 编码数据?

最佳答案

cvEncodeImage函数将要编码的图像的扩展名作为其第一个参数。您正在通过 0 ,与 NULL 相同.这就是您收到消息 NULL not valid 的原因.

你可能应该使用这个:

websocketBrokerStructure.matrix = cvEncodeImage(".png", websocketBrokerStructure.bgrImageToSend, 0);

您可以查看 cvEncodeImage 的文档 here .

您可以查看 cvEncodeImage 的一些示例, 或其 C++ 兄弟 imencode这里: encode_decode_test.cpp .它们还显示了一些您可以传递给 cvEncodeImage 的参数。如果你想调整它们。

关于Opencv - 创建png图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18035809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com