📌 Intro
프로젝트를 진행하기 위해 GoPro를 사용하게 되었고, python을 이용하여 GoPro를 다루는 기본적인 방법에 대해 정리하려고 한다. open gopro, goprocam 등 다양한 라이브러리가 있었는데 일단 기본적이더라도 사용법이 나와있는 goprocam라이브러리를 선택했다.
📌 가상 환경 생성
다음과 같은 명령어를 사용하여 고프로를 사용할 가상환경을 먼저 만들어주고 실행시키자.
conda create -n gopro python=3.6 activate gopro
다음 명령어를 이용하여 goprocam패키지를 다운 받는다.
pip install goprocam
📌 고프로 wifi 연결
내가 가지고 있는 고프로는 GoPro HERO7 BLACK모델이다. 이 모델 기준으로 [기본 설정] → [연결] → [무선 연결] → [켜기] 를 하면 고프로 내장 와이파이가 켜진다. 접속하고 싶은 노트북으로 해당 와이파이에 연결하자.(내 경우 window는 잘 안되었다. 데모 영상이나 유튜브 영상을 보니 맥북을 사용했고 나또한 그렇게 해결했다.)
📌 고프로 python 연결
1. 고프로 python 연결 확인
from goprocam import GoProCamera, constants
go_pro = GoProCamera.GoPro() # 고프로 객체 생성
go_pro.listMedia(True) # 고프로 저장소에 저장된 내용을 보여줌
위 코드를 통해 고프로 객체를 생성하고 고프로 SD카드에 저장된 미디어 리스트를 확인할 수 있다. 실행 결과는 다음과 같다.
고프로와 맥북이 정상적으로 연결되면 Camera successfully connected! 라는 문구가 나오고 현재 SD카드에는 2장의 사진이 있다는 것을 알 수 있다.
2. python을 사진찍기
from goprocam import GoProCamera, constants
go_pro = GoProCamera.GoPro() # 고프로 객체 생성
go_pro.take_photo() # 타이머 없이 사진을 찍음
go_pro.take_photo(timer=5) # 5초 타이머를 두고 사진을 찍음
go_pro.downloadLastMedia(custom_filename="selfies.jpg") # 마지막 미디어를 custom_filename으로 하여 다운로드
python을 이용하여 사진을 찍으려면 위의 코드와 같이 작성한 뒤 실행하면 된다. take_photo() 함수에 인자로 timer가 있는데 default값은 1이다. 즉 값을 주지 않으면 1초 후에 사진이 찍히게 되는 것인데, 만약 타이머 시간을 정하고 싶다면 timer=5 와 같이 값을 주면 된다.
downloadLastMedia() 함수를 이용하여 가장 최근에 촬영한 미디어를 다운 받을 수 있다. custom_filename을 정해줌으로써 해당 파일명으로 저장할 수 있다.
다음은 위 코드를 실행한 결과다.
만약 timer에 2이상의 값을 주면 wait n seconds 라는 문구가 나온다. 이후 찍힌 사진의 filename과 size가 출력된다.
3. GoPro 미디어 다운 받기
고프로의 이미지나 동영상을 다운 받는 방법을 알아보자.
from goprocam import GoProCamera, constants
import shutil
go_pro = GoProCamera.GoPro() # 고프로 객체 생성
medias = go_pro.downloadAll() # 모든 미디어 다운로드
# 원하는 위치로 이동
for media in medias:
shutil.move('./100GOPRO-{}'.format(media), './images/100GOPRO{}'.format(media))
downloadAll() 함수를 통해 고프로 SD카드에 저장된 모든 미디어를 다운 받을 수 있다.
shutil는 다운받은 미디어를 원하는 위치로 이동시키기 위해 import하였다.
고프로에서 다운받으면 터미널에는 filename이 "GOPRO..."으로 나온다. 하지만 실제로 다운받은 파일명은 앞에 "100GOPRO"가 붙어있다. 그래서 100GOPRO를 붙여준 것이다.
다음은 위 코드를 실행한 결과다. ./images/ 아래 다운받은 파일들이 잘 들어간 것을 확인할 수 있다.
4. GoPro 동영상 촬영하기
from goprocam import GoProCamera, constants
go_pro = GoProCamera.GoPro() # 고프로 객체 생성
go_pro.video_settings(res="1080p", fps="30") # 고프로 비디오 세팅
go_pro.shoot_video(duration=5) # duration 만큼 동영상 촬영
위 코드를 통해 비디오를 촬영할 수 있다.
video_settings() 함수는 비디오의 resolution과 fps를 인자를 통해 설정할 수 있다. 나의 경우 fps 변경은 잘 되었는데 resolution을 변경하는 것은 잘 되지 않았다. 이러한 이유는 더 알아봐야 한다.
shoot_video() 함수를 통해 비디오를 촬영할 수 있다. duration을 이용하여 원하는 시간만큼 촬영이 가능하다. 만약 duration의 값을 주지 않는다면 멈추지 않고 계속 촬영을 진행한다.
📌 정리
어렵지 않은 내용이지만 잘 정리되어 있는곳을 찾지 못해 많은 시간이 걸렸다. 앞으로도 고프로를 사용하며 알게되는 정보들을 지속적으로 정리해나가야겠다.
📌 참고
[1] https://github.com/KonradIT/gopro-py-api
[2] https://github.com/ardianumam/compilations/tree/master/GoproStreaming
[3] https://www.youtube.com/watch?v=Wi6aMYFSwcA