pyqt5使用从cv2获取摄像头并显示
时间: 2024-02-04 21:02:53 浏览: 85
Python通过cv2读取多个USB摄像头
5星 · 资源好评率100%
可以使用OpenCV库获取摄像头的图像,然后使用PyQt5库将图像显示在GUI界面上。下面是一个简单的示例代码:
```python
import cv2
import numpy as np
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
class WebcamWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Webcam Window')
self.setGeometry(100, 100, 640, 480)
self.label = QLabel(self)
self.label.setGeometry(0, 0, 640, 480)
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_frame)
self.timer.start(30)
self.cap = cv2.VideoCapture(0)
def update_frame(self):
ret, frame = self.cap.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h, w, ch = frame.shape
bytes_per_line = ch * w
qimg = QImage(frame.data, w, h, bytes_per_line, QImage.Format_RGB888)
pixmap = QPixmap.fromImage(qimg)
self.label.setPixmap(pixmap)
if __name__ == '__main__':
app = QApplication([])
window = WebcamWindow()
window.show()
app.exec_()
```
在这个例子中,我们创建了一个名为WebcamWindow的类,继承自QMainWindow。我们在构造函数中创建了一个QLabel控件,用于显示摄像头捕获的图像。我们还使用了QTimer定时器来定期刷新图像,以便我们可以看到实时的视频流。在update_frame()方法中,我们使用OpenCV库从摄像头中读取图像,并将其转换为QImage格式,然后将其显示在GUI界面上。最后,我们使用QApplication来启动应用程序。
阅读全文