как получить диапазон кадров (например, 30-50 кадров) из видеофайла с помощью opencv - PullRequest
0 голосов
/ 27 мая 2018

в настоящее время мой код получает все кадры в видео, но мне нужно всего несколько (около 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 голосов
/ 27 мая 2018

просто добавьте условие, что количество должно быть меньше 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...