赞
踩
对于树莓派处理能力低,无法满足实时逐帧处理rtsp视频流,而opencv的VideoCapture又无法清除缓存直接找到最新帧问题,导致处理延时不断积累。查找了网上一些资料,有人提出建立自己的缓存队列,然后抽帧处理,较为复杂,不适于树莓派。
经过尝试可以简单采取如下办法处理:
import cv2 cap = cv2.VideoCapture("rtsp://admin:xxxx@192.168.x.x:554/h264/ch31/main/av_stream") #ret,frame = cap.read() ret = cap.isOpened() fps = cap.get(5)/10000 #查询帧率 while ret: ret,frame = cap.read() tstep = cap.get(1) cv2.imshow("frame",frame) iloop=fps/2 #每秒处理2帧 while iloop: cap.grab() #只取帧不解码, iloop =iloop - 1 if iloop <1 : break if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() cap.release()
通过grab(),进行跳帧,基本处理延时不再积累,增加iloop可以进一步增大跳帧步数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。