目前我的代码获取了视频中的所有帧,但我只需要每个视频文件中的一些(大约20个)。
import cv2 as cv
d = 1
count = 0
for i in range(5):
s = '/home/mrrobot/Downloads/clipsnew/' + str(d) +'.mp4'
vidcap = cv.VideoCapture(s)
success,image = vidcap.read()
success = True
while success:
vidcap.set(30,50) #Does this even work?
cv.imwrite("/home/mrrobot/Downloads/image2/frame%d.jpg" % count, image)
success,image = vidcap.read()
print ('Read a new frame: ', success)
count += 1
d += 1
答案 0 :(得分:1)
只需添加计数应小于50的条件并跳过前30帧或将CV_CAP_PROP_POS_FRAMES
属性设置为30并读取20帧
import cv2 as cv
d = 1
for i in range(5):
s = '/home/mrrobot/Downloads/clipsnew/' + str(d) +'.mp4'
vidcap = cv.VideoCapture(s)
success,image = vidcap.read()
success = True
count = 0
while success and count < 50:
if count >= 30:
cv.imwrite("/home/mrrobot/Downloads/image2/frame%d.jpg" % count, image)
success,image = vidcap.read()
print ('Read a new frame: ', success)
count += 1
d += 1