반응형

동영상 파일을 일련번호 붙은 이미지 파일로 저장하는 OpenCV Python 예제입니다.



2024. 4. 20  최초작성




import os
import shutil
import cv2


save_dir = './img'


response = 'y'

# 디렉토리가 존재하는지 체크
if os.path.exists(save_dir):

    # 디렉토리를 지울지 물어봄
    response = input(f'{save_dir} 디렉토리가 존재합니다. 삭제하고 새로 생성하시겠습니까? (y/n): ')

    if response.lower() == 'y':

        # 디렉토리 삭제
        shutil.rmtree(save_dir)
        print(f'{save_dir} 디렉토리가 삭제되었습니다.')
    else:
        print('종료합니다.')
        exit(0)

# 디렉토리 새로 생성함
if response == 'y':
    os.makedirs(save_dir)
    print(f'{save_dir} 디렉토리가 생성되었습니다.')


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


# fps 알아내기
fps = cap.get(cv2.CAP_PROP_FPS)
print(f'fps = {fps}')
print()

# 일련번호 붙일때 사용할 변수
index = 0

while True:

    ret, img_frame = cap.read()


    if ret == False:
        break


    cv2.imshow('result', img_frame)
    key = cv2.waitKey(int(1000/fps)) # fps를 사용하여 delay 설정

    if key == 27: # ESC 키 누르면 중지
        break


    # 일련번호 붙인 이미지 파일로 저장
    index = index + 1

    filename = f'{index:05d}.png'
    fullpath = save_dir + '/' + filename
    cv2.imwrite(fullpath, img_frame)

    print(f'{fullpath}을 저장합니다.')

print(f'\n{index}개의 파일을 저장했습니다.')

cap.release()
cv2.destroyAllWindows()




다시 영상으로 만들때에는 다음 포스트를 참고하세요.

 

OpenCV - 이미지 파일을 mp4 동영상 파일로 변환하는 파이썬 코드

https://webnautes.tistory.com/2041



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts