【发布时间】:2020-01-04 14:28:54
【问题描述】:
我需要为连接到我的树莓派 3 b+ 的网络摄像机拍摄快照。我正在使用 python3 和 opencv。相机中有一个计时器,因此我可以检查快照是否在正确的时刻拍摄。
此脚本在我的装有 Windows 的 PC 上运行良好,但在树莓派中却不行。该脚本每秒拍摄一张快照,但拍摄的帧不正确,它是旧的。
在树莓派中,我使用 VLC 和 omxplayer 运行视频,并且运行流畅,所以我认为问题出在 Opencv 和我的代码中。我的印象是帧存储在缓冲区中,覆盆子太慢了,无法实时从缓冲区中获取所有帧,因此随着时间的推移,最后一个真实帧和所取帧之间存在更多延迟。
import threading
import time
import cv2
cap = cv2.VideoCapture(‘rtsp://192.168.0.88’)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 3)
counter = 0
while True:
ret, frame = cap.read()
if ret:
cv2.imwrite(str(counter) + '.jpg', frame)
counter = counter + 1
time.sleep(1)
有人知道我怎样才能只拍摄相机中的最新帧吗? 我要说明的是分辨率为 1920x1080,视频格式为 h264。此外,在实际应用中,我需要帧之间的时间为 0.1 秒。
【问题讨论】:
-
为什么将缓冲区大小设置为 3?
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)不会解决你的问题吗? -
不,它不能解决问题。
-
返回
True还是False?
标签: python opencv raspberry-pi rtsp ip-camera