pyqt5 rtsp摄像头
时间: 2023-10-09 19:14:14 浏览: 171
您可以使用 PyQt5 和 OpenCV 库来显示 RTSP 摄像头的视频流。以下是一个简单的示例代码:
```python
import sys
import cv2
import numpy as np
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtCore import Qt, QTimer
class VideoStream(QWidget):
def __init__(self):
super().__init__()
# 设置窗口大小
self.width = 640
self.height = 480
self.setGeometry(100, 100, self.width, self.height)
# 创建标签用于显示视频流
self.label = QLabel(self)
self.label.setAlignment(Qt.AlignCenter)
self.label.setGeometry(0, 0, self.width, self.height)
# 创建定时器用于每隔一段时间更新视频流
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_frame)
self.timer.start(1)
# 创建视频流
self.cap = cv2.VideoCapture('rtsp://your_camera_address')
def update_frame(self):
# 读取视频流的帧
ret, frame = self.cap.read()
if ret:
# 将 OpenCV 的图像格式转换为 PyQt5 的图像格式
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
h, w, ch = rgb_frame.shape
bytes_per_line = ch * w
qt_image = QImage(rgb_frame.data, w, h, bytes_per_line, QImage.Format_RGB888)
# 将图像显示在标签上
pixmap = QPixmap.fromImage(qt_image)
self.label.setPixmap(pixmap)
if __name__ == '__main__':
app = QApplication(sys.argv)
video_stream = VideoStream()
video_stream.show()
sys.exit(app.exec_())
```
需要将 `rtsp://your_camera_address` 替换为您的 RTSP 摄像头地址。这里的 `update_frame` 方法会每隔一段时间读取一帧视频流,并将其转换为 PyQt5 的图像格式,最后显示在标签上。
阅读全文