이미지 영상의 데이터베이스 구축을 할 일이 생겨 카메라를 찾아봤다. 인터넷으로 보니 GoPro 시리즈가 괜찮은 것 같아 구매하였다. 카메라 모델은 GoPro Hero 5 Black다. 먼저 카메라의 스펙을 보자.


사진 출처 : 네이버


크기 / 무게 : 약 62 x 45 x 34 (mm) / 약 90g

 -> 매우 작고 가볍다. 손바닥 안에 쏙 들어온다.

최대해상도 : UHD(3840 x 2160, 30프레임)

 -> 화질이 매우 좋다.

배터리 : 1220 mAh, 120분(4K, Wifi off시)

 -> 배터리가 약간 부족한 듯하다.

단자 : 마이크로HDMI, USB-C

 -> 단자도 부족함 없이 있는 듯하다.


구입당시 가격은 50만원대였으며 크기가 매우 작고 해상도가 높았다. 광각의 경우에는 매우 높은 화각을 자랑한다.


but.... 개발에 사용하다 보니 너무 많은 불편함이 있었다.


1. USB-C의 용도는 only 충전용이다.

 -> 구매 전 usb가 데이터 통신용이 아니라는 것은 알고 있었지만 usb를 연결했을 때 충전을 하며 개발을 진행할 수 있을 줄 알았다.. 그치만 just 충전용이였다.... 첫 좌절...


2. BLE의 용도는 only waking the camera up 이다.

 -> 여러대의 카메라를 동시에 연결하려 했고.. 그 방법으론 BLE 를 사용하려 했다. 그런데.. BLE는 단지 카메라의 파워 온만 가능하다...... 두번째 좌절..


3. Wifi Direct

 -> GoPro가 Wifi 에 접속하는 것이 아니다.... 우리가 GoPro에 접속하는 것이다...


4. Live Streaming

 -> UDP 프로토콜을 사용하여 스트리밍을 하고 이를 Wifi 를 이용해 접속하여 영상을 받아온다. 하지만.... 너무 끊긴다. 카메라의 화질과 차이가 너무 난다...


5. UDP 지연시간

 -> 접속 후 24 ~ 25초 동안 아무것도 하지않으면 종료된다. 따라서 UDP로 서버에 메시지를 보내야 한다......


결론

꼭 필요한 경우가 아니면 GoPro 시리즈는 비추천한다. (물 속 촬영 등 제외)



- 네트워크 환경


GoPro Hero 5 Black - Computer : Wifi



- 사용툴

Visual Studio 2017 (버전 무관), Python 3.6.0 (버전 무관), urllib, opencv-python 3.2.0 (자신에게 맞는 파이썬 버전에 깔아야한다)


 - VS와 Python 버전은 무관하지만 opencv-python 의 경우에는 버전을 잘 보고 설치하자. python 버전이 틀리면 작동하지 않는다. 기존 openCV를 설치한 분들은(openCV3.X 이상) python 2.7이 지원되므로 python 2.7을 설치하자. 하지만 그 이상의 python이 필요한 경우에는 맞는 버전을 찾아서 따로 설치해야 한다. 자세한 것은 인터넷 검색!



- 순서


1. 각종 툴을 살치한다. (설치 과정 생략)


 - 아래의 라이브러리들이 오류 없이 import 된다면 성공

 - import cv2

 - import socket

 - import time

 - import sys

 - import urllib.request

 - import numpy as np (여기서는 사용하지 않지만 나중에 필요하므로 설치)


2. GoPro Hero 5 는 설명도 빈약하다. Hero 5 관련 명령어를 찾으면 Hero 4로 넘어가곤 하는데 옵션이 다른 경우가 상당하다. (인터넷에는 Hero 5 관련 내용이 많이 나오지도 않는다....)


 - https://github.com/KonradIT/goprowifihack/tree/master/HERO5

 - 위의 사이트에서 필요한 명령어를 찾도록 하자. 꼭 필요한 명령어는 UDP Streaming 재실행이다. 해당 명령어는 다음과 같다.

 - http://10.5.5.9/gp/gpControl/execute?p1=gpStream&a1=proto_v2&c1=restart


3. 여기서 찾은 명령어들은 urllib 를 통해 Request 하고 urlopen 하면 된다. 원하는 설정들을 찾아서 입력하자 (입력 후에 확인이 필요하다. 해당 명령어들이 Hero 4 에 해당하는 것이 많다.)


4. VLC 나 FFMpeg 등을 이용하여 UDP 에 접속하여도 되나 속도가 모두 똑같다. 필자는 그냥 Videocapture 를 이용해서 접속하였다.


5. UDP 접속 시간을 늘리기 위해 UDP 로 메시지 패킷을 보낼 준비를 하자.


6. 테스트




조금 느리긴 하지만 실행이 잘 되는 것을 확인 할 수 있다.


다음번에는 이 코드를 C++ 로 옮기도록 하겠다.


오늘의 교훈

사전조사를 철저히!

'프로젝트 > Python' 카테고리의 다른 글

Deep Learning - Install Tensorflow  (0) 2017.12.08
GoPro Hero 5 - Live streaming  (0) 2017.06.13
블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적

댓글을 달아 주세요