QPixmap - проблема с белым дисплеем - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь показать изображения OpenCV в графическом виджете на Qt со следующим кодом Python:

frame = self.frames[number]
height, width, channel = frame.shape
bytesPerLine = 3*width
qImg = QtGui.QImage(frame.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB32)
self.scene.addPixmap(QPixmap(qImg))
self.graphicsView.setScene(self.scene)
self.graphicsView.show()

Приведенный выше код показывает изображение в графическом виджете как полностью белое или не отображается навсе, потому что фон виджета GraphicsView белый.

Однако, когда я изменяю следующий код с

qImg = QtGui.QImage(frame.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB32)

на

qImg = QtGui.QImage(frame.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888),

, изображение отображается в виджете,Однако качество изображения не такое, как мне нужно.

Я должен показать свое изображение в качестве RGB, не меняя значения цвета в пикселях.Это возможно, показывая мое изображение в формате RGB32.Как мне справиться с этим?

Best,

1 Ответ

0 голосов
/ 08 июня 2018

Конструктор, который вы используете для QImage, не будет преобразовывать.Поэтому параметр format должен соответствовать формату ваших данных.Ваши данные в 24-битном формате, поэтому вам нужно использовать QtGui.QImage.Format_RGB888.

. В любом случае, 32-битный формат не отличается по качеству - он просто имеет дополнительный 0xff передкаждое 24-битное значение.

Никакой другой код формата не будет работать.Если у вас есть проблемы с качеством, возможно, вам придется искать в другом месте.Но вы можете конвертировать изображение в другой формат, используя convertToFormat.

...