곰퓨타의 SW 이야기

[python] opencv video to image 본문

Project/python 활용(ex.openCV)

[python] opencv video to image

곰퓨타 2021. 4. 21. 14:29

파이썬에서 opencv를 활용하면 여러가지 동영상 이미지를 다룰 수 있다.

동영상을 여러장의 frame으로 변환하고자 하는 경우 다음과 같은 코드를 통해 변환이 가능하다.

import cv2
vidcap = cv2.VideoCapture('/path_input_video.mp4')
success,image = vidcap.read()
count = 0
while success:
  cv2.imwrite("/path_output_frame/%06d.jpg" % count, image)     # save frame as JPEG file
  success,image = vidcap.read()
  print('Read a new frame: ', success)
  count += 1

print("finish! convert video to frame")

 

 

다음과 같은 동영상에 대해 위의 코드를 수행하면, 다음과 같이 여러 장의 frame으로 저장된다.

 

 

 

+++++21.11.03 video(.mov) 가 여러 개인 directory를 input으로 넣어서 video -> image 하고 싶은 경우

import cv2
import argparse
import glob

def video2image(opt):
    video_paths = glob.glob(opt.video_dir+"/*.mov")
    print(video_paths)
    for vp in video_paths:
        video_name = vp.split("/")[-1][:-4]
        vidcap = cv2.VideoCapture(vp)
        success,image = vidcap.read()
        count = 0
        new_path = '../custom/images/'
        while success:
            cv2.imwrite(new_path+video_name+"_%04d.jpg" % count, image)     # save frame as JPEG file
            success,image = vidcap.read()
            # print('Read a new frame: ', success)
            count += 1

        print("finish! convert video to frame {name}".format(name=video_name))
    
    print("all convert finish!!")


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--video_dir', type=str, help='path to video directory')
    opt = parser.parse_args()

    video2image(opt)
Comments