如何使用opencv从视频文件中获取一系列帧(例如帧30-50)

时间:2018-05-27 12:11:51

标签: python python-2.7 opencv

目前我的代码获取了视频中的所有帧,但我只需要每个视频文件中的一些(大约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

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