[英]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.