Как мне уменьшить количество кадров в OpenCV Python? - PullRequest
0 голосов
/ 14 апреля 2019

Я использую python и opencv для работы с фреймом.Я следую приведенному ниже коду, который сохраняет кадр в каталоге.У меня проблема в том, что даже если видео длится 1 секунду, я получаю более 1000 кадров.

Кто-нибудь может мне помочь, как уменьшить количество кадров?

import cv2
import os 
cap = cv2.VideoCapture('7.mp4') 
currentFrame = 0
ret, frame = cap.read()
current_dir=os.getcwd()
while ret:
 name = current_dir+'/pic2/frame' + str(currentFrame) + '.jpg'
 print(name)
 cv2.imwrite(name,frame)
 currentFrame+=1

1 Ответ

0 голосов
/ 14 апреля 2019

Вы читаете 1 кадр, а затем, потому что ret==True, вы находитесь в бесконечном цикле, сохраняя один и тот же кадр снова и снова.Как вы можете видеть из учебников , вы должны сделать что-то вроде этого:

import os
import cv2

cap = cv2.VideoCapture('7.mp4') 

currentFrame = 0
current_dir = os.getcwd()
while True:                   # infinite loop
    ret, frame = cap.read()   # read frame-by-frame
    if not ret:               # if read fails
        break                 # break the loop
    name = os.path.join(current_dir, 'pic', 'frame{}.jpg'.format(currentFrame))
    print(name)
    cv2.imwrite(name, frame)
    currentFrame += 1

cap.release()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...