python opencv按照一定间隔保存视频帧
文章目录:
想实现opencv读取视频帧,按照一定的时间间隔然后保存图片下来,因为所有的帧都保存下来既费时又占空间,开始想用schedule 定时模块实现,后来发现好像不行,主要是因为while循环,于是想用读取视频帧的间隔来取想要保存的视频帧。
一、获取视频流的相关参数
这个查看前面的博客:——>这里
二、设置间隔保存视频帧
import cv2
cap = cv2.VideoCapture(0) # 读取摄像头视频流
fps = cap.get(cv.CAP_PROP_FPS) # 获取视频或者摄像头读取的视频流的帧率
print(type(fps), fps) # <class 'float'> 30.0 #
cap.set(cv2.CAP_PROP_POS_FRAMES,50) #设置要获取的帧号
c=1
if cap.isOpened(): # 断是否正常打开
rval , frame = vc.read()
else:
rval = False
timeF = 30 # 视频帧计数间隔频率
while rval: # 循环读取视频帧
rval, frame = vc.read()
if(c%timeF == 0): # 每隔timeF帧进行存储操作
cv2.imwrite('image/'+str(c) + '.jpg',frame) # 存储为图像
c = c + 1
cv2.waitKey(1)
cap.release()
我亲自测试,当timeF 设置每隔30帧保存一次,这个时间间隔大概是6s 的样子。当然,如果你想要设置其他时间也可以自己修改,或者通过计算设置一个值。
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠