QPixmap 白色显示问题
QPixmap white display issue
我正在尝试使用以下 python 代码在 Qt 上的 GraphicsView 小部件上显示 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 格式显示我的图像是可能的。我该如何处理?
最佳,
您为 QImage
使用的构造函数不会进行任何转换。所以 format
参数必须匹配你的数据格式。您的数据是 24 位格式,因此您需要使用 QtGui.QImage.Format_RGB888
.
无论如何,32 位格式在质量上没有区别 - 它只是在每个 24 位值前面多了一个 0xff
。
其他格式代码均无效。如果您有质量问题,您可能需要寻找其他地方。但是您可以使用 convertToFormat
.
将图像转换为不同的格式
我正在尝试使用以下 python 代码在 Qt 上的 GraphicsView 小部件上显示 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 格式显示我的图像是可能的。我该如何处理?
最佳,
您为 QImage
使用的构造函数不会进行任何转换。所以 format
参数必须匹配你的数据格式。您的数据是 24 位格式,因此您需要使用 QtGui.QImage.Format_RGB888
.
无论如何,32 位格式在质量上没有区别 - 它只是在每个 24 位值前面多了一个 0xff
。
其他格式代码均无效。如果您有质量问题,您可能需要寻找其他地方。但是您可以使用 convertToFormat
.