我正在开展一个项目,我将在网络上实时传输网络摄像头图像。但Iplimage有一个很大的尺寸,所以它不适合udp数据包。我必须将其压缩为jpeg格式。我做了一些研究,许多例子都将图片保存在磁盘上,然后读取到内存中。但我想在记忆中做到这一点。我在我的项目中使用Qt。
在内存中压缩Iplimage有什么解决方案吗? 可能Qt有解决方案吗?
答案 0 :(得分:2)
Qt有QImageWriter类,它支持JPEG格式并允许指定压缩级别。您可以使用它将QImage数据保存到QByteArray。以下是一个例子:
QImage image("/home/image_from.png");
QByteArray array;
QBuffer buffer(&array);
// write image to memory buffer
QImageWriter writer;
writer.setDevice(&buffer);
writer.setFormat("JPEG");
writer.setCompression(9);
writer.write(image);
或者您可以使用QPixmap保存方法;它还允许将内存缓冲区指定为输出设备:
QImage image("/home/image_from.png");
QPixmap pixmap = QPixmap::fromImage(image);
QByteArray array;
QBuffer buffer(&array);
pixmap.save(&buffer, "JPEG", 9);
希望这有帮助,尊重
答案 1 :(得分:0)
或者因为你正在使用openCV iplimage)你可以使用imencode转换为缓冲区中的jpeg