from PySide6.QtCore import Qt
from numpy import ndarray
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
from PySide6.QtGui import QPixmap
from PIL import Image, ImageQt
class ImageViewer(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Image Viewer')
self.setGeometry(100, 100, 300, 300)
layout = QVBoxLayout()
# 创建一个 QLabel 用于显示图像
self.label = QLabel(self)
# 顶部对齐
self.label.setAlignment(Qt.AlignTop)
layout.addWidget(self.label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def updateImage(self, image_data: Image):
# 转一下
q_image = ImageQt.ImageQt(image_data)
# 将 QImage 转换成 QPixmap,并显示在 QLabel 中
pixmap = QPixmap.fromImage(q_image)
self.label.setPixmap(pixmap)
使用
if __name__ == '__main__':
.....
# 用Qt动态显示一下图像
app = QApplication(sys.argv)
viewer = ImageViewer()
viewer.show()
image_container = ImageContainer(300, 100)
while True:
try:
image: ndarray = camera.get_image()
if image is not None:
container_image = image_container.get_base_container_image()
viewer.updateImage(container_image)
key = cv2.waitKey(50) & 0xFF
if key == ord('e') or key == ord('E'):
cv2.destroyAllWindows()
break
except Exception as e:
print(e)
sys.exit(app.exec())