라즈베리에서 사용할 UI를 찾는 도중...

(MAC에서 개발해보고 raspberrypi에 배포가능한 형태로 ...)


1) Electron + html

언어 : nodejs, javascript, css, html, electron-framework

장점 : html로 구현가능, javascript만 잘알아도 굳

단점 : html로 하기 때문에 제약이 좀 있음. nodejs도 알아야 편함.


2) JavaFX

언어 : java, css

장점 : 무겁다 

단점 : 참조 소스가 많음, SceneBuilder를 UI구성 손쉽다. 코딩량이 많음.


3) Kivy 

언어 : pythonm kivy-framework

장점 : 가볍다, 코딩량이 적음

단점 : 환경구성이 쉽진 않았음. (뭐 공홈에 나온데로 해도 안되는 부분이 좀 발생함)



위 3개 중에서 고민 했었는데 ... 

각각 일장 일단이 있으므로, 일단 다 helloworld 수준까지는 해보기로 함.

( python, java, javascript, nodejs ... 다양한 언어를 알아야 됨... 물론 약간만 알고 PASS, 현시점에서는)

( 물론 pyqt 같은 것도 있었는데 설치 용량도 크고 배워야 될 것이 너무 많아 일단 배제함. )


1) Electron + html


매직미러를 만들어 봤음 



웹으로 UI를 손쉽게 구현할 수 있었으나 ... 라즈베리에 올라가니 실제 속도가 늦어지는 단점이 있었고 뭔가 아쉬움이 있었음


2) JavaFX


간단한 websocket 기반의 채팅 프로그램을 올려서 테스트 해봤는데 ... 

부팅 시간이랑 Animation 부분이 영 맘에 안들었음 ㅜㅜ 1) 보다 속도가 더 안나오는 듯한 느낌이 들었음

하지만 정형화 된 틀에서 뭔가를 만든다고 한다면 생산성이 잘 나올거 같음(SceneBuilder 때문, Java에 익숙하기 ㅋ)


3) Kivy 




소스코드 분량도 확실히 적고 코딩(.py) 디자인(.kv)가 분리 되어 유지보수가 수월함.(python이 익숙하지 않은것이 문제 ;;)



==> 총평

Java에 익숙하다면 JavaFx

Python에 익숙하면 Kivy

Web에 익숙하다면 Electron + HTML


[코딩시간]

개인적으로는 java와 javascript를 많이 써서 1(electron), 2(javafx)가 시간이 적게 든거 같음.

하지만 python에 익숙한 사람이라면 kivy를 배워 UI를 구성하는 것도 좋은거 같음.


[UI구성]

UI구성에 있어서는 정형화된 대쉬보드를 만드는 것이라면 2(javafx)를 선택하여 scenebuilder를 활용한다면 손쉽고 빠르게 뭔가를 만들 수 있을거 같음.


[범용성]

3(kivy) 같은 경우 거의모든 플렛폼에서 (linux, vm, windows, mac, rapberrypi, ios, android) 동작하기 때문에 잘 만들어만 두면 좋을거 같다. 거기다 파이썬을 어느정도 해본 사람이라면 추천 !!



참조1) JavaFX에서 WebView올리고 HTML로만 구성하는것 보단 Electron으로 구현하는 편이좋음

참조2) 동일 CASE로 테스트 하면 더 좋겠지만 재미도 없고, 시간도 없어서 샘플에 맞춰 대충 해보니 ;;



[설치]


#1 소스 다운로드 받아서 컴파일하는 방법 

http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/


#2 그냥 리파지토리에서 다운로드 받아 설치 하는 방법 

http://cosmosjs.blog.me/220723901506


물론 2번이 쉽다.


$ sudo apt-get install libopencv-dev python-opencv


[장단점 정리]


#1) 소스컴파일 

장점 

  최신버전 사용가능 2017년 2월 현재 3.2.0 버전 사용 가능  


단점

  느리다 : 대략 반나절 이상 걸림, python2.7 버전용 / 3.4에서 안됨


#2) apt-get 

장점

  빠르다 : 1분도 안되서 가능


단점

  구식 버전임 2017년 2월 현재 2.4.9.1 버전을 다운로드 받음


[총평]


일단 apt-get으로 다운로드 받아서 감좀 익혀 본 이후 소스 컴파일 하여 cv2.so 파일을 site-packages에 넣어 사용하는 방법을 추천 함.


[기타링크]


imutils 사용 예제 - opencv 활용 유틸리티 메소드

http://www.pyimagesearch.com/2015/02/02/just-open-sourced-personal-imutils-package-series-opencv-convenience-functions/

+ Recent posts