преобразование изображений из необработанного файла в jpeg - qt

у меня есть необработанный буфер изображения. я конвертирую его в jpeg, используя следующий код:

  height = 240;
  width = 320;
raw_image=capture(width, height);//(c code uvc capture)
        QImage tmpImage = QImage(raw_image, width, height, QImage::Format_RGB32 ); //image.format=RGB888
        QByteArray im;
QBuffer bufferJpeg(&im);
bufferJpeg.open(QIODevice::WriteOnly);
tmpImage.save(&bufferJpeg, "JPG");
 tmpImage.save("image1.jpg","JPG");

он захватывает и преобразует его в jpeg. но захваченное изображение не является правильным. я приложил изображение для справки

введите здесь описание изображения

а для QImage tmpImage = QImage(raw_image, ширина, высота, QImage::Format_RGB16); изображение введите описание изображения здесь

для QImage tmpImage = QImage(raw_image, ширина, высота, QImage::Format_RGB444); введите здесь описание изображения

Как я могу получить правильное изображение? заранее спасибо.


person geek    schedule 16.10.2013    source источник
comment
В моей ситуации размер необработанных данных в два раза больше ширины * высоты, поэтому формат должен быть RGB16, который занимает 2 байта на пиксель. Но у меня такой же плохой результат, как и у вас. И кажется, что QImage не поддерживает такой формат, как YUYV.   -  person 李骏骁    schedule 30.10.2015


Ответы (1)


неправильное цветовое пространство.

==> Формат_RGB32

Попробуйте: QVideoFrame::Format_YUYV или QVideoFrame::Format_UYVY

person guest    schedule 16.10.2013
comment
@sakshi Глядя на ваш ввод, он выглядит как 16 бит на пиксель, а не 32 бит на пиксель. Вот почему 1/2 изображения - мусор. Он получает случайный мусор в куче после raw_image. Вот почему цвета неправильные. - person drescherjm; 16.10.2013
comment
@drescherjm после изменения формата на QImage::Format_RGB16 изображение стало еще хуже. Я пробовал все форматы. этот код правильный? я отредактирую вопрос о Format_RGB16. - person geek; 17.10.2013