Всем здравствуйте. Разрабатываю программку по обработке изображений по учёбе на С++, OpenCV и QT. Как правило используется соотношение сторон 4 к 3. Программка работает нормально. Как только загружаем изображение отличное от этого соотношения сторон, получаемое изображение едет.
Нормальные изображения:
Оригинал:
Вывод программы:
.
Соответственно, когда соотношение сторон другое:
получается следующее:
.
Все преобразования происходят в OpenCV.
Итоговая картинка выводится на форму и сохраняется из QImage, и вот, когда мы передаём картинку в IplImage в функцию для получения QImage у нас и происходит искажение.
код функции IplImage2QImage, в котором происходит искажение при неправильном соотношении сторон картинки.
QImage MainWindow::IplImage2QImage(const IplImage *iplImage)
{
//http://josedolz.jimdo.com/computer-vision-tutorials/iplimage-to-qimage/
int height = image_original->height(); //iplImage->height;
int width = image_original->width();//iplImage->width;
const uchar *qImageBuffer =(const uchar*)iplImage->imageData;
QImage img(qImageBuffer, width, height, QImage::Format_RGB888);
return img.rgbSwapped();
}
Собственно, вопрос: как исправить данный код, чтобы он корректно отрабатывал и для других соотношений сторон изображения?