我正在研究一个项目,我将在网络上实时传输网络摄像头图像。但Iplimage具有很大的尺寸,因此不适合udp数据包。我必须将其压缩为jpeg格式。我做了一些研究,很多例子都将照片保存在磁盘上,然后读到内存中。但我想要记忆。我在我的项目上使用Qt。在内存上将Iplimage压缩为jpeg
有没有解决方案在内存上压缩Iplimage? 可能是Qt有一个解决方案吗?
我正在研究一个项目,我将在网络上实时传输网络摄像头图像。但Iplimage具有很大的尺寸,因此不适合udp数据包。我必须将其压缩为jpeg格式。我做了一些研究,很多例子都将照片保存在磁盘上,然后读到内存中。但我想要记忆。我在我的项目上使用Qt。在内存上将Iplimage压缩为jpeg
有没有解决方案在内存上压缩Iplimage? 可能是Qt有一个解决方案吗?
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);
希望这会有所帮助,至于
是否到jpeg你足够幸运,[ImageMagick](http://www.imagemagick.org/script/formats.php)了解你的格式?我没有在列表中看到“Iplimage”,但很难从ImageMagick中找出丢失的图像类型。 – sarnold 2011-03-26 09:33:49
无论如何,压缩映像应该被分割成几个UDP数据包。我怀疑jpeg压缩映像只适合一个UDP数据包。 – 2011-03-26 19:40:41