我试图用PyQt6来显示OpenCV图像(NumPy数组)。
以前的Qt版本(PyQt4和PyQt5)将NumPy数组转换为
QPixmap
,然后使用
QLabel
显示。
but this doesn't seem to work in
PyQt6
.
当我试图显示它时,我得到一个扭曲的图像
from PyQt6.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QHBoxLayout, QGridLayout
from PyQt6.QtGui import QImage, QPixmap
import sys
import cv2
class DisplayImageWidget(QWidget):
def __init__(self):
super(DisplayImageWidget, self).__init__()
self.image = cv2.imread('2.png')
self.convert = QImage(self.image, 400, 400, QImage.Format.Format_BGR888)
self.frame = QLabel()
self.frame.setPixmap(QPixmap.fromImage(self.convert))
self.layout = QHBoxLayout(self)
self.layout.addWidget(self.frame)
if __name__ == '__main__':
app = QApplication([])
main_window = QMainWindow()
main_window.setWindowTitle('Video Frame Acquisition')
main_window.setFixedSize(500, 500)
central_widget = QWidget()
main_layout = QGridLayout()
central_widget.setLayout(main_layout)
main_window.setCentralWidget(central_widget)
display_image_widget = DisplayImageWidget()
main_layout.addWidget(display_image_widget, 0, 0)
main_window.show()
sys.exit(app.exec())
我尝试了所有类型的different QtGui.QImage.Format
types但我很确定Format_BGR888
应该是正确的。图片正在显示,但我无法让它的格式正确。