Я работаю над домашней работой для своего класса обработки цифровых изображений, и я использую OpenCV с QT Framework.QWidget рисует искаженный угловой QImage
Я создал класс ImageDisplay
, который является подклассом класса QWidget
.
Я использую OpenCV для управления полутоновым изображением, а затем создаю объект QImage
объекта Mat
. После этого я использую QWidget::drawImage()
, чтобы нарисовать изображение. Но иногда это показывает искаженное, угловатое изображение.
Я экспериментировал и обнаружил, что он имеет какое-то отношение к размерам изображения.
Например, это изображение с 320x391 пикселей визуализируется обычно
Но если изменение размерности к 321x391 (с помощью Gimp), он показывает, как это:
Это код paintEvent
метод:
void ImageDisplay::paintEvent(QPaintEvent *){
QPainter painter(this);
Mat tmp;
/* The mat in the next line is a Mat object that contains the image data */
cvtColor(mat, tmp, CV_GRAY2BGR);
QImage image(tmp.data, tmp.cols, tmp.rows, QImage::Format_RGB888);
painter.drawImage(rect(), image);
}
кто-нибудь имеет понятия, что это проблема и как это исправить?
Заранее благодарен!
Где вы изменение размера изображения? Кажется, что вы изменили размеры, но использовали старый буфер данных (со старым измерением). Вы можете видеть это, глядя на нижний черный ряд вашего _tilted_ image – Miki
О, нет. Я не изменял размер изображения с помощью кода. Я просто использовал gimp и изменил размер изображения. –