繁体   English   中英

OpenCV-创建PNG图像

[英]Opencv - create png image

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

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

问题是,使用项目中已经使用的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(其中bgrImage是具有3个通道的IplImage* )之后,我只需要遍历CvMat data成员即可获取所有png编码数据?

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

您可能应该使用此:

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

您可以在此处查看cvEncodeImage的文档。

您可以检查出的一些例子cvEncodeImage ,或它的C ++兄弟imencode这里: encode_decode_test.cpp 它们还显示了一些参数,您可以在传递给cvEncodeImage的情况下进行调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM