본문 바로가기

컴퓨터/파이썬 (Python)

opencv2 이용 비디오에서 이미지 추출하기

여기저기 참고해서 만든 코드를 기록

 

package import

import cv2
import os
from tqdm.notebook import tqdm, trange

 

1. 비디오 하나에서 추출하기

vid_path = 'hr_files/vids/video_1.mpg'
pic_path = 'hr_files/pics/video_1/'
vid = 'video_1.mpg'

cap = cv2.VideoCapture(vid_path)
#fps = cap.get(5)
fn = 0
if cap.isOpened():
    while True:
        ret, img = cap.read()
        if not ret:
            break
        if int(cap.get(1)) % 5 == 0:        #5장마다 1장 추출
            cv2.imwrite(pic_path + vid[:-4] +  '_' + str(fn).rjust(6, '0') + '.png', img)
            fn += 1

    cap.release()
    print(vid)

이미지를 추출할 비디오가 저장된 vid_path에서

이미지를 저장할 pic_path로 5 frame에 1장씩 추출하는 코드

 

2. 여러 비디오에서 각 비디오를 저장할 폴더를 만들며 추출하기

vid_path = 'lr_files/vids/'
pic_path = 'lr_files/pics/'


vids = os.listdir(vid_path)
for vid in tqdm(vids):
    os.mkdir(pic_path + vid)
    cap = cv2.VideoCapture(vid_path + vid)
#         fps = cap.get(5)
    fn = 0
    if cap.isOpened():
        while True:
            ret, img = cap.read()
            if not ret:
                break
            path = pic_path + vid + '/'
            if int(cap.get(1)) % 5 == 0:        #5장마다 1장 추출
                cv2.imwrite(path + vid +  '_' + str(fn).rjust(6, '0') + '.png', img)
                fn += 1

        cap.release()
        print(vid)