怎么用pyside2和opencv显示树莓派传过来的视频流
在qt designer里拖一个label,把类提升成QVideoWidget
然后需要一个USB摄像头连着树莓派,我使用motion推流,地址是http://192.168.137.2:8081/
接收代码为
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
from PySide2.QtGui import *
import threading
import cv2
class Video:
def __init__(self):
self.ui = QUiLoader().load('untitled.ui')
def Open(self):
url = "http://192.168.137.2:8081/"
self.cap = cv2.VideoCapture(url)
self.frameRate = self.cap.get(cv2.CAP_PROP_FPS)
# 创建视频显示线程
th = threading.Thread(target=self.Display)
th.start()
def Display(self):
while self.cap.isOpened():
success, frame = self.cap.read()
# RGB转BGR
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
img = QImage(frame.data, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
self.ui.DisplayLabel.setPixmap(QPixmap.fromImage(img))
#按比例填充
self.ui.DisplayLabel.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)
self.ui.DisplayLabel.setScaledContents(True)
#cv2.waitKey(1)
if __name__ == '__main__':
app = QApplication([])
video = Video()
video.ui.show()
video.Open()
app.exec_()