2-11. 실전 코딩
동영상 전환 이펙트
페이드-인(fade-in), 페이트-아웃(fade-out), 디졸브(dissolve), 밀기, 확대 등 두 동영상 클립 사이에 추가되는 애니메이션 효과
코딩 목표는 두 동영상을 밀기 효과로 이어주어 새로운 영상을 제작하는 것이다. 원리는 아래 그림을 참고.

구현해야하는 기능:
1. 두 개의 동영상 동시 열기
2. 첫 번째 동영상의 마지막 N개 프레임과 두번째 동영상의 처음 N개 프레임을 합성
3. 새로운 동영상으로 저장
아래는 구현해야하는 기능을 포함한 로직을 주석으로 설명해 두었다.
#import sys
#import numpy
#import OpenCV
# OpenCV의 VideoCaputre 클래스를 사용해 합칠 두 영상 가져오기
# 영상이 제대로 불러졌는지 확인
# 두 영상의 프레임 갯수 저장
# 두 영상의 fps 저장
# 겹쳐질 frame 갯수 N을 int(fps * #)로 계산 (두 영상의 fps를 동일하다 가정하기 때문에 어느 fps를 쓰던 상관 없음)
# 1000/fps로 openCV 창으로 창을 유지할 시간 계산 (= delay)
# (두 영상의 크기가 동일하다는 가정 하에)
# 한 동영상의 w, h를 가져오기
# 새로운 영상 저장할 fourcc 저장
# 출력 동영상 객체 생성
# 처음 동영상의 첫 프레임 부터 최종 frame 수에서 겹쳐질 frame 개수를 뺀 frame 만큼 loop
# 프레임 읽어오기
# 결과 확인
# 잘 안됐으면 에러 메세지 출력 및 시스템 종료
# 출력 동영상에 프레임 저장
# 저장된 프레임을 imshow로 출력
# delay만큼 기다리기
# 겹쳐질 frame 개수 만큼 loop
# 두 영상의 프레임 각각 읽어오기
# 결과 확인
# 잘 안됐으면 에러 메세지 출력 및 시스템 종료
# 프레임을 밀어낼 dw 계산 = int(w/겹쳐질 프레임 값) * looping index
# 비어있는 영상 만들기
# 첫번째 영상의 0~dw까지의 영상을 비어있는 영상에 복사
# 두번째 영상의 dw~w까지의 영상을 비어있는 영상에 복사
# 출력 동영상에 프레임 저장
# 저장된 프레임을 imshow로 출력
# delay만큼 기다리기
# 연결될 동영상의 겹쳐진 frame 부터 나머지 frame 만큼 loop
# 프레임 읽어오기
# 결과 확인
# 잘 안됐으면 에러 메세지 출력 및 시스템 종료
# 출력 동영상에 프레임 저장
# 저장된 프레임을 imshow로 출력
# delay만큼 기다리기
# 영상 제작 완료 메세지 띄우기
# 만든 동영상 클래스 release
# OpenCV 창 모두 종료
아래는 Ch2를 들으면서 만들었던 동영상을 이어본 결과 영상이다. 강의 영상에서는 디졸브 하는 방식도 알려주셔서 적용해 보았다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
인증 타임
실전 코딩 파트이긴 하지만 강의 자료에 코드를 다 제공해 주셔서 비디오를 만드는데 있어서 읽어오는 파일 이름 변경과 전체 과정 한 번 더 반복하여 두번째 영상을 저장하게끔 할 수 있게만 수정했다. 프레임끼리 연결하는 방식은 이해했으니 페이드 인/아웃의 원리도 생각해보거나 검색해서 적용해보고 싶다. 원리만 배웠으면 지루했을 텐데 내가 가진 영상으로 직접 결과물을 볼 수 있는 과제가 매 챕터 끝마다 있어서 좀 더 흥미롭게 배울 수 있었다.

* 아래는 원래 2장의 인증 사진이 필요한데 결과물을 동영상으로 올려서 추가하는 인증 사진...;;

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online
패스트캠퍼스(FastCampus) 강의 둘러보러 가기
↓ ↓ ↓
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'남돈내배 > 2022_FastCampus_환급이벤트' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 16일차 - Ch3. 기본적인 영상 처리 기법 (0) | 2022.02.08 |
|---|---|
| 패스트캠퍼스 챌린지 15일차 - Ch3. 기본적인 영상 처리 기법 (0) | 2022.02.07 |
| 패스트캠퍼스 챌린지 13일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.05 |
| 패스트캠퍼스 챌린지 12일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.04 |
| 패스트캠퍼스 챌린지 11일차 - Ch2. OpenCV-Python 기초 사용법 (0) | 2022.02.03 |