티스토리 뷰

반응형

 

다른 강의자료는 www.codingnow.co.kr/ 여기를 참고해주세요.!!

 

코딩나우

프로그래밍 교육및 개발의뢰 받습니다.

www.codingnow.co.kr

https://youtu.be/Gr9ArMUQq3s

 

 

 

 

약 2일간 1분 간격으로 촬영한 사진 2,496장을 타임랩스 동영상을 만들기 위해 제작 해 봤습니다.

(아두이노 ESP32CAM을 사용하여 촬영하였으며, 촬영 강의는 준비되면 올리겠습니다.~~)

 

OpenCV와 os 패키지를 사용하였으며,

소스 코드는 매우 간단합니다.

 

자세한 설명은 첨부된 동영상을 참고 해주세요.

파일 경로

 

[테스트용 이미지 파일]

images.zip
9.14MB

 

[소스코드]

import cv2
import os

#pip install opencv-python

image_folder = 'images'
video_name = 'video.avi'

#1. 모든 이미지 파일의 파일명을 리스트로 변환
images = [img for img in os.listdir(image_folder) if img.endswith(".jpg")]
# print(images)

#2. 첫번째 이미지의 프레임크기 정보를 가져온다.
frame = cv2.imread(os.path.join(image_folder, images[0]))
height, width, layers = frame.shape
# print(width, height, layers)

#3. 비디오 생성
# *은 'D', 'I', 'V', 'X' 이렇게 문자열을 문자로
video = cv2.VideoWriter(video_name, 
                        cv2.VideoWriter_fourcc(*'DIVX'), 
                        100, 
                        (width, height))

#4. 이미지 파일을 하나씩 가져와서 비디오에 추가
for image in images:
    video.write(cv2.imread(os.path.join(image_folder, image)))

#5. 종료
cv2.destroyAllWindows()
video.release()

[주요 인자 설명]

VideoWriter의 인자 설명자료입니다.

 

cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor=None)

filename: 파일 이름

fourcc: 코덱

   -.ex : cv2.VideoWriter_fourcc(*'DIVX')

              *'DIVX' <- DIVX MPEG-4 Codec

              *'XVID' <- XVID MPEG-4  Codec

              *'FMP4' <- FFMPEG MPEG-4 Codec

              *'X264' <- H.264/AVC Codec

              *'MJPG' <- MOTION-JPG Codec

fps: 초당 프레임 수

frameSize: 프레임 크기. 튜플(width, height)

isColor:

    -. True : 컬러 영상

    -. False : 흑백

    -. default : True

 

OpenCV의 간단 설명입니다.

위키백과, 우리 모두의 백과사전.

*OpenCV(Open Source Computer Vision)

  실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리이다.

*원래는 인텔이 개발하였다.

*실시간 이미지 프로세싱에 중점을 둔 라이브러리이다.

* 인텔 CPU에서 사용되는 경우 속도의 향상을 볼 수 있는 IPP(Intel Performance Primitives)를 지원한다.

* 라이브러리는 윈도우, 리눅스 등에서 사용 가능한 크로스 플랫폼이며

  오픈소스 BSD 허가서 하에서 무료로 사용할 수 있다.

* OpenCVTensorFlow, Torch / PyTorch Caffe딥러닝 프레임워크를 지원한다.

 

 

반응형