본문 바로가기
컴퓨터/파이썬 (Python)

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

by Honbul 2022. 10. 8.

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

 

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)