QPixmap白色显示问题

时间:2018-06-08 08:19:01

标签: python qt pyqt4

我试图使用以下python代码在Qt上的GraphicsView Widget上显示OpenCV图像:

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 Widget上的图像显示为全白,或者根本不显示,因为GraphicsView Widget背景为白色。

但是,当我从

更改以下代码时
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格式显示我的图像。我该如何管理?

最佳,

1 个答案:

答案 0 :(得分:3)

您用于QImage的构造函数不会进行任何转换。因此format参数必须与您的数据格式相匹配。您的数据采用24位格式,因此您需要使用QtGui.QImage.Format_RGB888

在任何情况下,32位格式的质量都没有差别 - 它在每个24位值前面只有一个0xff

没有其他格式代码可行。如果您遇到质量问题,可能需要查看其他地方。但您可以使用convertToFormat将图像转换为其他格式。