pyside2在label中添加摄像头视频的代码
时间: 2023-12-27 22:05:26 浏览: 81
Sure! 下面是一个使用 PySide2 在 QLabel 中显示摄像头视频的示例代码:
```python
import sys
import cv2
from PySide2.QtWidgets import QApplication, QMainWindow, QLabel
from PySide2.QtCore import Qt, QTimer
from PySide2.QtGui import QImage, QPixmap
class VideoPlayer(QMainWindow):
def __init__(self):
super().__init__()
self.label = QLabel(self)
self.label.setAlignment(Qt.AlignCenter)
self.setCentralWidget(self.label)
self.timer = QTimer()
self.timer.timeout.connect(self.play_video)
self.video_capture = cv2.VideoCapture(0) # 0 表示默认摄像头
def start_video(self):
self.timer.start(30) # 以30ms的间隔刷新视频帧
def stop_video(self):
self.timer.stop()
def play_video(self):
ret, frame = self.video_capture.read()
if ret:
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frame_qimage = QImage(frame_rgb.data, frame_rgb.shape[1], frame_rgb.shape[0], QImage.Format_RGB888)
frame_qpixmap = QPixmap.fromImage(frame_qimage)
frame_resized = frame_qpixmap.scaled(self.label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
self.label.setPixmap(frame_resized)
if __name__ == "__main__":
app = QApplication(sys.argv)
player = VideoPlayer()
player.start_video()
player.show()
sys.exit(app.exec_())
```
这段代码创建了一个继承自 QMainWindow 的 VideoPlayer 类,其中在 QLabel 中显示摄像头视频。代码中使用 OpenCV 来捕获摄像头视频,并将每一帧转换为 PySide2 可以显示的格式。通过调用 `start_video()` 方法来开始播放视频,调用 `stop_video()` 方法来停止播放视频。
希望这个示例代码对你有帮助!
阅读全文