用QCamera读取摄像头图像并显示到QLabel上的代码示例
时间: 2024-03-25 20:41:46 浏览: 153
Qt下使用OpenCV4打开摄像头并把图像显示到QLabel上.zip
以下是一个简单的代码示例,展示如何使用QCamera读取摄像头图像并将其显示在QLabel上:
```python
from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtMultimedia import QCamera, QCameraInfo
from PyQt5.QtMultimediaWidgets import QCameraViewfinder
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个QCameraViewfinder对象,并设置为主窗口的中心部件
viewfinder = QCameraViewfinder(self)
self.setCentralWidget(viewfinder)
# 获取第一个可用的摄像头
camera_info = QCameraInfo.availableCameras()[0]
self.camera = QCamera(camera_info)
# 将摄像头输出流连接到QCameraViewfinder上
self.camera.setViewfinder(viewfinder)
# 启动摄像头
self.camera.start()
# 创建一个QLabel对象,并将其添加到主窗口的布局中
self.label = QLabel(self)
layout = QVBoxLayout()
layout.addWidget(self.label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
# 在主循环中,不断从摄像头中读取图像并将其显示在QLabel上
self.camera.imageCaptured.connect(self.display_image)
self.camera.startCapture()
def display_image(self, id, image):
# 将QImage转换为QPixmap,并将其设置为QLabel的图像
pixmap = QPixmap.fromImage(image)
self.label.setPixmap(pixmap)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这个例子创建了一个QCameraViewfinder对象,并将其设置为主窗口的中心部件。它还获取第一个可用的摄像头,并将摄像头输出流连接到QCameraViewfinder上。在主循环中,它不断从摄像头中读取图像,并将其转换为QPixmap,并将其设置为QLabel的图像。
阅读全文