지난 번에 라즈베리 파이(Raspberry Pi)와 파이페이스 컨트롤 & 디스플레이(PiFace Control and Display)를 이용해 MP3/인터넷 라디오 플레이어를 제작했었다. 이번에는 라즈베리 파이에 카메라 모듈을 부착해 사진을 찍어보고, 동영상을 촬영해보고, 마지막으로 타임 랩스(Time-lapse) 영상을 한 번 제작해볼 것이다.
라즈베리 파이 소개 역시 지난 번에 했으니 생략하도록 하고, 우리가 해볼 타임 랩스 촬영에 대해서 알아보도록 하자. 타임 랩스(Time-lapse; Time-lapse photography 혹은 cinematography)는 일정하게 정해진 간격으로 피사체(혹은 풍경)의 움직임을 촬영한 후 정상 속도로 영사하는 것으로, 눈에 띄지 않을 만큼 긴 지속시간을 건너뛰면서 일련의 진행 과정을 촬영하는 방법을 말한다. 그래도 감이 잘 안 온다면? 유튜브에 time lapse video를 검색해서 아무 영상이나 하나 보고 난다면, 바로 감이 잡힐 것이다.
▲ 라즈베리 파이 카메라 모듈은 이렇게 생겼다
준비물은 다음과 같다. 지난 번 프로젝트를 통해 기본적인 라즈베리 파이 세팅 및 사용 준비가 완료돼있다고 가정한다:
- 라즈베리 파이 3 (홈페이지: https://www.raspberrypi.org/)
- 라즈베리 파이용 카메라 모듈 (버전은 상관없음)
- 본 글에서는 IR 기능이 없는 구형 모델을 사용할 예정이다. 그 밖에 카메라 모듈의 버전 별로 지원 해상도, 사용 센서 등이 다르므로 본인의 입맛에 맞는 것을 구매하자. 물론 최근에 나온 버전일 수록 좋다.
1. 카메라 모듈 설치 및 세팅
① 위에 사진도 첨부해놨지만, 처음 카메라 모듈이란 물건을 보는 순간 일단 당황스러운 느낌을 받게 되며 '대체 이게 뭐지...?'를 머릿속에서 연발하게 된다. 그래도 당황하지 말자. 카메라 모듈은 라즈베리 파이에서 CSI(Camera Serial Interface Header)라는 카메라 전용 입력 포트에 연결을 하게 되는데, 아래 사진에 동그라미 친 곳이 바로 CSI 포트이다.
※ SD카드 가까이에 있는 비슷하게 생긴 포트와 헷갈리면 안 된다. 그 포트는 DSI(Display Serial Interface) 포트로, LCD 등의 디스플레이를 통해 화면을 출력시키는 용도로 사용하는 출력 포트이기 때문.
하얀 색으로 된 닫개를 위로 올려 모듈을 장착할 수 있도록 열은 후에, 모듈을 아래 사진과 같이 연결한다. 주의할 점은, 전선이 드러나는 부분이 HDMI 포트 쪽을 향해야 한다는 것이다.
※ 카메라 모듈 연결은 반드시 라즈베리 파이의 전원을 연결하지 않은 상태에서 진행해야 한다.
② 카메라 모듈 설치는 완료했지만 역시 바로 사용할 수는 없다. 지난 번 프로젝트에서 VNC와 SPI 인터페이스를 활성화시키던 과정이 생각날 것이다. 마찬가지로 카메라 모듈 역시 카메라 인터페이스 활성화가 필요하다. 터미널에서 다음 명령어를 입력해 (우선 패키지 업데이트를 완료한 후) 라즈베리 파이 환경 설정 툴에 들어가자.
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo raspi-config
5 Interfacing Options -> P1 Camera 순으로 들어간 뒤 <Yes>를 선택한다.
마지막으로 재부팅을 해주자. 이로써 카메라 설치 및 세팅이 완료됐다.
2. 촬영방법 익히기
① 사진이나 동영상을 촬영하는 방법은 무지무지 간단하다. 터미널에서 raspistill과 raspivid 명령어에 몇 가지 파라미터를 추가한 것 단 한 줄 만으로 사진과 동영상을 촬영하고 결과물을 당장 확인할 수 있다.
일단 속는 셈 치고 다음 명령어를 입력해보자.
$ raspistill -t 2000 -o image.jpg
바로 ls를 쳐서 파일 목록을 보자. image.jpg 파일이 생겼음을 알 수 있다!
image.jpg의 파일을 실행해 사진이 어떻게 찍혔는지 결과를 알아보자.
image.jpg, 2592 x 1944
② 이제 raspistill이 사진을 촬영하는데 필요한 명령어임을 알게 됐다. 이제 -t는 왜 쓰이고, -o은 무엇인지 궁금증이 생길 것이다. raspistill에 쓰이는 빈도가 높은 주요 파라미터들만 간추려 간략하게 알아보도록 하자.
-?, --help: 도움말을 표시한다.
-w, --width: 사진의 가로 사이즈를 정한다.
-h, --height: 사진의 세로 사이즈를 정한다.
※ 기본 사이즈는 2592x1944이다.
ex) raspistill -w 960 -h 720 -o output.jpg
960x720 크기로 사진을 저장한다.
-q, --quality: 저장하는 사진의 JPEG (압축) 품질을 지정한다. 0부터 100 중에서 입력 가능하며 0에 가까워질 수록 사진 용량은 작아지지만 화질은 떨어진다.
ex) raspistill -q 92 -o output.jpg
JPEG 품질 92로 사진을 저장한다.
-o, --output: 파일로 만들고자 하는 파일 이름을 입력한다. 따로 입력하지 않으면 파일은 생성되지 않는다.
ex1) raspistill -o output.jpg
output.jpg 파일로 사진을 저장한다.
ex2) raspistill -o -
표준 출력 장치(STDOUT)로 이미지를 출력한다.
ex3) raspistill -o - > output.jpg
표준 출력 장치로 출력한 이미지를 파일로 저장한다.
-t, --timeout: 지정한 시간(ms 단위)이 지난 후에 사진을 촬영한다. 따로 입력하지 않으면 디폴트 값인 5초로 설정된다.
ex) raspistill -t 2000 -o image.jpg
2초가 지난 후에 사진을 촬영하고 저장한다.
-e, --encoding: 사진 포맷을 바꿀 수 있다. (지원 포맷: jpg, bmp, gif, png)
ex) raspistill -t 2000 -o image.png –e png
2초가 지난 후에 사진을 촬영하고 png 포맷으로 저장한다.
-tl, --timelapse: 일정 시간 간격으로 사진을 저장하는, 즉 타임랩스 모드이다.
ex) raspistill -t 600000 -tl 10000 -o image_num_%d_today.jpg
10분(600000ms)동안 10초(10000ms)에 한 번씩 사진을 촬영해 저장한다. 파일 이름의 %d에는 프레임 숫자가 입력된다.
-sh, --sharpness: 사진의 선명도(sharpness)를 조절한다. -100부터 100 중에서 입력할 수 있다.
-co, --contrast: 사진의 대비(콘트라스트; contrast)를 조절한다. -100부터 100 중에서 입력할 수 있다.
-br, --brightness: 사진의 밝기를 조절한다. -100부터 100 중에서 입력할 수 있다.
-sa, --saturation: 사진의 채도(saturation)를 조절한다. -100부터 100 중에서 입력할 수 있다.
ex) raspistill -sa -100 -o dark.jpg
채도가 -100인(=흑백인) 사진 dark.jpg를 저장한다.
-ISO, --ISO: 촬영 시 카메라의 ISO 감도를 조절한다. 범위는 100부터 800까지이다. ISO 감도를 높이면 어두운 장소에서도 밝은 사진을 쉽게 찍을 수 있으나, ISO 감도가 높아질수록 디테일 및 채도가 점차 저하되고 노이즈가 증가하여 전반적인 사진의 화질은 떨어지게 된다.
-ev, --ev: 노출 보정(EV compensation)값을 조절한다. +값으로 설정하면 전체적으로 좀 더 밝은 이미지를 표현하고, -값으로 설정하면 조금 더 어두운 이미지를 표현한다. 범위는 -10에서 +10이며, 기본값은 0이다.
-ifx, --imxfx: 사진에 효과를 준다. 종류가 정말 다양하므로 몇 가지만 추려서 적어본다:
negative(반전 효과), sketch(스케치 효과), denoise(노이즈 제거), emboss(엠보싱 효과), oilpaint(유화 효과), pastel(파스텔 톤 효과), watercolour(수화 효과), film(필름 그레인 효과), blur(이미지 블러)
ex) raspistill -t 2000 -o image.jpg -ifx emboss
엠보싱 효과로 사진을 설정하고 2초 후에 촬영해 저장한다.
-rot, --rotation: 사진을 정해진 각도만큼 회전시킨다. 범위는 0부터 360까지라고 적혀있으나 0, 90, 180, 270 중에서만 사용할 수 있다. 바로 위에 첨부했던 사진처럼 180도 회전된 사진을 원래대로 만들기에 유용하다.
ex) raspistill -rot 180 -o image.jpg
180도 회전시킨 사진을 저장한다.
-hf, --hflip: 사진을 상하 반전(수평 뒤집기)시킨다.
-vf, --vflip: 사진을 좌우 반전(수직 뒤집기)시킨다.
이제 우리가 위에서 무턱대고 입력했었던 raspistill 명령어와 파라미터들이 무슨 역할을 하는지 확실히 알 수 있게 됐고, 이를 응용할 수도 있을 것이다. 이걸 적절히 조합하여 본인이 찍고자 하는 사진을 찍어보도록 하자.
③ 더 나아가, raspistill 명령어를 쉘 스크립트에 적용해보는 방법을 써볼 수 있다. 쉘 스크립트(Shell Script)란 쉘에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치(batch) 파일, 쉽게 얘기해 프로그램을 만든 것을 말한다. 사진 한 장을 찍는 기능을 하는 쉘 스크립트를 한 번 만들어보도록 하자.
쉘 스크립트의 확장자는 .sh이며, nano를 이용해 camera.sh 쉘 스크립트를 만들어본다.
$ sudo nano camera.sh
소스는 다음과 같이 작성할 수 있다:
1 2 3 | #! /bin/bash DATE=$(date +"%Y-%m-%d_%H%M") raspistill -rot 180 -t 2000 -o /home/pi/camera/$DATE.jpg |
스크립트 파일의 첫 줄은 bash로 작성되었다는 것을 의미하며, bash을 기준으로 실행된다는 것을 의미한다.
사진을 찍은 년-월-일_시분을 파일 이름에 넣기 위해 실행 변수 DATE를 선언한다. $(...)으로 둘러 싸인 것의 의미는 그 명령을 먼저 수행한다는 뜻이다. 실행 변수의 내용을 사용할 때는 변수명 앞에 '$'를 붙인다. (ex: $DATE.jpg)
필자의 카메라는 위 image.jpg에서 보다시피 사진이 180도 뒤집혀진 상태로 찍히기 때문에, 다시 180도를 돌려 사진을 정상적으로 출력하기 위해 -rot 180을 사용했다.
※ 카메라 모듈을 어떻게 부착했느냐에 따라 촬영된 사진의 회전된 각도가 다르기 때문에, 본인이 우선 터미널에서 간단히 raspistill 명령어를 이용해 사진을 찍어보고, 필요한 각도를 입력해주자. (사진이 정상적으로 찍힌다면 파라미터는 필요없을 것이다.)
작성한 camera.sh 쉘 스크립트를 실행 가능하도록 권한을 부여하고, 사진 저장 폴더인 ~/camera를 만든 뒤, 쉘 스크립트를 실행해 사진이 촬영되었는지 확인해본다. 필자는 4월 6일 오전 10시 41분에 쉘 스크립트를 실행했다.
$ sudo chmod +x ~/camera.sh
$ mkdir ~/camera
$ ~/camera.sh
쉘 스크립트가 무사히 실행됐음을 확인하였다!
2017-04-06_1041.jpg, 2592 x 1944
④ 그래도 카테고리의 명색이 Python인데, 파이썬 코딩이 빠지면 섭하지. 라즈베리 파이에서 지원하는 PiCamera 라이브러리/모듈을 불러와서 코드를 작성하면 되는데, 우리가 위에서 명령어/파라미터와 쉘 스크립트로 했던 걸 조금만 응용하면 되는 수준으로 아주 쉽다.
사진을 촬영해 camera 폴더의 output.jpg 파일로 저장하는 파이썬 프로그램을 설계해보자:
1 2 3 4 5 6 7 | import picamera camera = picamera.PiCamera() camera.rotation = 180 camera.resolution = (1920, 1080) camera.capture('/home/pi/camera/output.jpg') |
picamera 라이브러리/모듈을 불러오는 것으로 시작한다.
지난 번 MP3-인터넷 라디오 플레이어를 만들 때 PiFace Control & Display를 다뤄본 사람이라면 PiCamera도 비슷한 구조를 가지고 있다는 걸 눈치챌 것이다. camera 변수에 PiCamera를 불러와 할당하고 새로운 객체를 만든다.
그 다음부터는 PiCamera에 수록된 여러 메소드를 이용하면 된다. 앞서 우리는 사진을 정상적으로 돌리기 위해 180도 회전을 줬듯이, rotation 메소드에 180을 할당해준다. 아래줄 처럼 사진 출력 해상도도 조절할 수 있다.
캡쳐는 capture라는 메소드를 사용한다. 인자는 저장하고자 하는 파일의 풀 네임을 적는다. 주소를 적지 않을 경우 해당 파이썬 프로그램이 있는 디렉토리에 저장된다.
소스를 보면 알다시피, raspistill 명령어에 쓰이는 파라미터와 PiCamera의 메소드는 일맥상통한다고 볼 수 있다. 그러므로 파이썬 프로그램을 작성할 때, 매뉴얼을 보면서 본인이 사진을 찍을 때 추가해주고픈 기능을 하는 메소드를 찾아 추가하면서 작성하면 되겠다.
※ 매뉴얼: http://picamera.readthedocs.io/en/release-1.10/api_camera.html
프로그램의 구동 결과는 다음과 같다. output.jpg 파일이 생성되었다:
output.jpg, 1920x1080
3. Time-lapse 촬영하기
① 타임 랩스 촬영 방법을 알아보기에 앞서, 촬영 기법이 기법인 만큼 수많은 사진 파일과 조우하게 되기 때문에 좀 더 사진 파일들을 간편하게 컨트롤할 수 있어야 한다. 라즈베리 파이 OS인 라즈비안 안에서 수많은 파일을 다루기엔 라즈베리 파이 성능의 한계상 느리고 오래 걸리기 때문에, 라즈베리 파이의 데이터(정확히는 삽입된 SD카드)를 공유해 윈도우에서 접속할 방법을 알아보도록 하자.
아주 오래전부터 리눅스 계열에서 사용된 삼바(samba)라는 소프트웨어가 있다. 윈도우 PC에서 리눅스(혹은 유닉스) 서버에 접속해 파일이나 프린터를 공유하여 사용할 수 있도록 해주는 것인데, 우리는 라즈베리 파이의 서버에 접속할 필요성이 있으므로 적절하고 탁월한 소프트웨어가 아닐까 싶다.
설치도 간편하다. 다음 명령어를 입력해주자:
$ sudo apt-get install samba samba-common-bin
설치가 완료됐으면 다음 명령어를 입력해 비밀번호를 설정해준다. 리눅스의 시스템이 그러하듯 비밀번호를 입력할 때 비밀번호는 터미널에 출력되지 않음을 주의하자:
$ sudo smbpasswd -a pi
-a 뒤에는 사용자 이름이 들어간다. 필자는 디폴트인 pi를 쓰기 때문에 pi를 입력했다.
비밀번호 설정을 완료했다면 다음 명령어를 통해 삼바 서버의 환경설정 파일을 연다:
$ sudo nano /etc/samba/smb.conf
환경설정 파일이 열렸다면, 파일의 제일 아래에 다음 문구들을 추가해준다. 윈도우와 공유할 사용자의 디렉토리를 설정하는 과정이다.
[pi]
path = /home/pi
comment = Raspberry Pi SAMBA SERVER
valid user = pi
writable = yes
browseable = yes
create mask = 0777
public = yes
하나하나 뜯어보면 이렇다:
[(사용자 이름)]: 본인이 원하는 대로 이름을 지어준다
comment: 간단한 설명
path: 삼바로 공유할 디렉토리 경로
valid user: 서비스 디렉토리에 사용 가능한 사용자 (이 옵션이 생략되면 모든 사용자가 접근 가능)
writable: 쓰기 권한(yes/no)
browseable: 이용 가능한 공유 리스트를 보여줄 것인가를 지정(yes/no)
create mask: 삼바로 생성되는 파일의 권한
public: 디렉토리에 공개적으로 접근이 가능한가를 지정(yes/no)
※1 그 밖에 여러 옵션을 추가/수정할 수 있으므로, 본인의 입맛에 따라 사용자 설정을 바꿔서 입력해주어도 된다. 예를 들어, 촬영한 사진이 들은 디렉토리만 공유하고 싶다면 path를 /home/pi/camera로 적어도 되겠다. 이 글에 적지 못한 기타 옵션들은 매뉴얼을 참고하자: https://www.samba.org/samba/docs/using_samba/ch06.html
※2 권한에 대한 자세한 정보는 다음 표를 참조하자:
예를 들어 0777은 소유자, 그룹, 기타 사용자 모두 읽고, 쓰고, 실행이 가능(4+2+1)하다는 뜻이다.
※3 create mask를 통해 윈도우에서 해당 폴더를 공유해서 파일을 생성하게 되었을때 어떠한 파일권한을 갖게 할것인지를 설정해도, 삼바의 로직 상 이것만으로는 파일 생성권한이 먹히지 않는다. 왜냐하면 security mask에서 또한 같이 권한 설정이 되어있어야 하기 때문이다. 만일 create mask에서 설정한대로 되게 하고 싶으면, security mask를 추가해 create mask과 같은 값을 할당시켜주자.
삼바 환경설정 파일을 저장한 후, 다음 명령어를 입력해 삼바 서비스를 재시작해준다:
$ sudo /ect/init.d/samba restart
이제 윈도우에서 파일 탐색기를 실행하고 [네트워크]에 들어가보자. 삼바를 통해 공유된 라즈베리 파이의 서버에 접속 가능해졌음을 확인할 수 있다. (혹은 시작 메뉴 - [실행]에 들어가 \\(라즈베리 파이 IP)를 입력해 들어갈 수도 있다. 예를 들면, \\192.168.0.24 처럼 말이다.)
or
↓
② 우리가 위에서 만들었던 camera.sh 쉘 스크립트와 파이썬 프로그램을 기억하는가? 이걸 특정한 주기를 설정해 계속해서 실행하게 만드는 방법이 있다. 리눅스에서 지원하는 크론탭(crontab)이라는 소프트웨어가 바로 그것이다.
다음 명령어를 입력해 크론탭에 기능을 추가해보도록 하자:
$ sudo crontab -e
처음 입력시 크론탭에 사용할 에디터를 묻는 선택지가 나오는데, 가장 간편한 2번 nano를 택하자.
맨 아래에 다음 문구를 입력해준다.
*/1 * * * * /home/pi/bin/camera.sh
사진을 참고하자. 예를 들어 11 * * * * 이라면 매시 11분마다(2시 11분, 3시 11분, 4시 11분…) camera.sh이 작동되는 것이다. 만약에 1분'마다' 돌려주고 싶다면(즉 한 시간에 60번을 돌려주고 싶다면) 위에 쓴 것 처럼 별 옆에 /1를 적어준다.
만약에 30초에 한 번씩 써주고 싶다면 * * * * * 명령어 & sleep 30; 명령어; 의 구조로 써주면 된다.
ex) * * * * * /home/pi/bin/camera.sh & sleep 30; /home/pi/bin/camera.sh;
쉘 스크립트 대신 파이썬 프로그램을 쓰고 싶다면 다음과 같이 적어주자.
ex) */1 * * * * python3 /home/pi/bin/camera.py
③ 아예 파이썬으로 작성하는 방법은 없냐고? 당연히 있다. 위에서 짰었던 파이썬 소스에서 capture 메소드 대신 capture_continuous 메소드를 사용하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 | import picamera from time import sleep from datetime import datetime, timedelta camera = picamera.PiCamera() camera.rotation = 180 camera.resolution = (1920, 1080) sleep(5) for filename in camera.capture_continuous('/home/pi/camera/{timestamp:%Y-%m-%d-%H%M%S}.jpg'): print('Captured %s' % filename) sleep(2) |
capture_continuous는 이름 그대로 capture 기능을 계속해서 수행한다는 것이다. 파일 이름은 년-월-일-시분초 로 저장된다. 사진 촬영에 앞서 5초간 정지하고, 5초가 지난 뒤에 2초에 한 장식 사진을 촬영하는 기능을 한다.
이걸 라즈베리 파이에 전원을 입력할 때마다(혹은 부팅할 때마다) 써주고 싶다면? 크론탭을 이용해주면 된다! 이번엔 * * * * * 대신 @reboot을 붙여주면 된다.
4. Time-lapse 영상화하기
타임 랩스로 촬영한 수많은 사진을 영상화하는 방식은 수십가지가 있지만, 그 중에서 필자가 추천하는 방법은 MakeAVI를 이용하는 방법이다. AVI 포맷과 AVI용 코덱 자체가 이젠 시대에 한참 뒤떨어진 것이긴 하나, 우선 사진들을 영상으로 가장 간단하게 만들 수 있기 때문이다. 우선 빠르게 avi 파일로 만들어 준 뒤, 팟인코더 등의 인코딩 프로그램이나 어도비 프리미어, 소니 베가스 등의 영상 편집 툴을 이용해 재가공할 것을 권한다.
MakeAVI는 다음 링크에서 다운로드 가능하다: https://sourceforge.net/projects/makeavi/files/latest/download
다운로드 후 실행을 해보자. Add Files로 찍은 사진들을 전부 불러오고(한 번에 3000장 이상 불러올 때 버그가 있다고 하니, 약간 분할해서 불러올 필요가 있겠다) 초당 몇 장의 사진으로 구성할 것인지 프레임률을 정한다. 필자는 1초에 12장을 사용하기 위해 12fps로 설정했다. 그리고 제작할 준비가 완료됐다면 Begin!을 눌러주자.
파일을 제작하기 전에 avi 파일로 만들기 위해 사용할 코덱을 정해야 한다. 무압축 코덱(전체 프레임/압축 안 함)은 찍은 사진들로부터 단 1의 손실 없이 그대로 영상을 제작할 수 있으나, 용량이 아주 어마무지하게 크기 때문에, 사용 공간이나 사양의 여유가 없다 싶으면 대신 Microsoft Video 1 코덱을 압축 품질 90-100로 설정하고 사용해보자. 설정을 완료했다면 확인을 눌러 영상 파일을 제작한다.
파일이 생성됐는지 확인해본다. 이후 본인의 입맛에 맞게 재가공해보도록 하자.
5. 결과물 및 마무리
처음에는 집에서 영화관을 가는 왕복 코스를 찍어보려고 했다. 나의 동네에서 일산으로, 혹은 홍대입구를 거쳐 상암으로, 혹은 종로3가로, 그리고 다시 나의 동네로 오는 과정을 말이다. 실제로 이틀에 걸쳐 이를 시도했었는데, 이상하게도 계속 파일의 일부분이 계속 덮어쓰기되는 오류가 발생해 전체 과정을 엮을 수 없게 되었다. 그래도 가는 과정과 오는 과정의 일부가 살아남았다는 사실에 안도했다.
처음엔 9초 간격으로 찍었다가 버스의 빠른 속도에 비해 9초의 간격은 너무 컸기에 과정의 연속성이 전혀 느껴지지 않았고, 5초로 시험삼아 줄여보았는데 그것도 만족스럽지 않았기에 2초로 줄여보았으나 그래도 점프컷스러운 느낌이 드는 건 어쩔 수가 없나보다. 카메라 모듈이 흔들림 보정에 취약해서 버스의 진동도 그대로 담아내고 있고. 어쨌든 사진은 대략 5300여장이 12/15프레임씩 사용됐으며, 이는 2초 간격으로 3시간 촬영 분량이다.
실수도 많았고 결과물은 기대보다 좀 별로지만, 그래도 무언가가 이어져서 활동 사진(motion picture)처럼 보이고 느껴지도록 만드는 행위를 이제서야 비로소 하게 되었다는 사실에 신나고 흥미를 느낀 것도 부정할 수 없을 터. 라즈베리 파이라는 기기의 한계를 생각해본다면 이정도면 괜찮겠지…라는 생각을 애써 가져본다.
타임랩스 영상은 MakeAVI 파일로 무압축본 제작 후 Davinci Resolve 12를 통해 색 보정을 거쳤고, Adobe Premiere CC로 엔딩 크레딧과 함께 최종 렌더링 과정을 거쳤다. 제목은 그냥 서울(seoul)이 단어 soul과 발음 장난을 많이 당하기도 하고... 문득 자아 탐구(soul-searching)라는 단어가 생각나서 적어보았다. 실제로 종종 서울을 걷다보면 생각이 많아지기도 하니. 지금 다시 보니 크레딧에 special thanks를 안 적었네😓 모두에게 감사합니다.
'Programming > Python' 카테고리의 다른 글
[Python] 라즈베리 파이의 GPIO를 이용해 스위치/LED 제어하기 (2) (2) | 2017.04.11 |
---|---|
[Python] Raspberry Pi와 PiFace CAD를 이용한 MP3/라디오 플레이어 만들기 (1) | 2017.04.02 |
[Python] OpenWeatherMap의 API를 이용한 세계 특정 도시의 날씨 출력하기 (1) | 2017.03.25 |