我正在尝试从RTSP Feed中指定时间拉出单个帧。
这适用于视频流:
vcap = cv2.VideoCapture(RTSP_URL)
while(1):
ret, frame = vcap.read()
cv2.imshow('VIDEO', frame)
cv2.waitKey(1)
但是如果我想每秒拍摄一张照片并通过这样的方式保存它:
vcap = cv2.VideoCapture(RTSP_URL)
for t in range(60):
ret, frame = vcap.read()
if ret:
cv2.imwrite("{}.jpg".format(t), frame)
time.sleep(1);
每张图片看起来与第一张图片完全一样。在每个实例中,ret == True。
(一周前这对我来说还不错,然后ipython做了一些需要我重新安装的东西)
答案 0 :(得分:1)
cv2.waitKey(1000)
显示图片, cv2.imshow()
将无法执行任何操作。尝试:
vcap = cv2.VideoCapture(RTSP_URL)
for t in range(60):
ret, frame = vcap.read()
cv2.imwrite('{}.jpg'.format(t), frame)
# this will activate the waitKey funciton
cv2.imshow('preview', frame)
cv2.waitKey(1000)
另一方面,iPython / jupyter并不能很好地使用cv2的imshow
和整个GUI功能。例如,如果你不能通过按键打破循环
if (cv2.waitKey(1000) == 27 & 0xff): break;
答案 1 :(得分:0)
好吧,在过去几天无休止地搞乱之后,无论出于什么原因,1秒的速度都不够快。
这将有效:
vcap = cv2.VideoCapture(RTSP_URL)
for t in range(60):
ret, frame = vcap.read()
if ret and t % 1000 == 0:
cv2.imwrite("{}.jpg".format(t), frame)
time.sleep(0.001)