Сжатие Iplimage для JPEG в памяти - PullRequest
0 голосов
/ 26 марта 2011

Я работаю над проектом, который я буду передавать изображения с веб-камеры в сети в режиме реального времени. Но Iplimage имеет большой размер, поэтому он не помещается в пакет udp. Я должен сжать его в формате JPEG. Я провел некоторые исследования, многие примеры сохраняют картинку на диске и затем читают в память. Но я хочу сделать это на память. Я использую Qt в своем проекте.

Есть ли решение для сжатия Iplimage в памяти? Может быть, у Qt есть решение для этого?

Ответы [ 2 ]

2 голосов
/ 26 марта 2011

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);

надеюсь, это поможет, с уважением

0 голосов
/ 26 марта 2011

Или, так как вы используете openCV iplimage), вы можете просто использовать imencode для преобразования в jpeg в буфер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...