C++ 在内存中将Iplimage压缩为jpeg

C++ 在内存中将Iplimage压缩为jpeg,c++,qt,opencv,C++,Qt,Opencv,我正在做一个项目,我将在网络上传输实时摄像头图像。但是Iplimage的大小很大,因此不适合udp数据包。我必须把它压缩成jpeg格式。我做了一些研究,很多例子都把图片保存在磁盘上,然后读到内存中。但我想凭记忆来做。我正在我的项目中使用Qt 有没有办法压缩内存上的Iplimage? Qt是否有解决方案?Qt有支持JPEG格式并允许指定压缩级别的类。您可以使用它将QImage数据保存到。以下是一个例子: QImage image("/home/image_from.png"); QByteArr

我正在做一个项目,我将在网络上传输实时摄像头图像。但是Iplimage的大小很大,因此不适合udp数据包。我必须把它压缩成jpeg格式。我做了一些研究,很多例子都把图片保存在磁盘上,然后读到内存中。但我想凭记忆来做。我正在我的项目中使用Qt

有没有办法压缩内存上的Iplimage? Qt是否有解决方案?

Qt有支持JPEG格式并允许指定压缩级别的类。您可以使用它将QImage数据保存到。以下是一个例子:

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);
或者您可以使用保存方法;它还允许将内存缓冲区指定为输出设备:

QImage image("/home/image_from.png");
QPixmap pixmap = QPixmap::fromImage(image);

QByteArray array;
QBuffer buffer(&array);
pixmap.save(&buffer, "JPEG", 9);

希望这对您有所帮助,或者因为您使用的是openCV iplimage),您可以使用它在缓冲区中转换为jpeg格式

您是否足够幸运,能够理解您的格式?我在列表中没有看到“Iplimage”,但很难理解ImageMagick中缺少的图像类型。无论如何,压缩后的图像应该分割成几个UDP数据包。我怀疑一个jpeg压缩的图像是否只适合一个UDP数据包。它在javaCV中可用吗?