메뉴 건너뛰기

응용프로그램 - RaspberryPi.NCLab

1. 필요한 패키지 설치

# pacman -Sy make gcc opencv opencv-samples cmake pkg-config libunistring glib2 git vim ncurses zlib xz


* 간혹 아래와 같이 종속성 문제를 해결하기 위해 사용자에게 어떤 패키지를 쓸 것인지 물어보는데 

libx264는 1(기본값)을 선택하고 lzo2는 지우도록(y 선택) 하자

resolving dependencies...
:: There are 2 providers available for libx264.so=148-32:
:: Repository extra
   1) libx264  2) libx264-10bit

Enter a number (default=1):
looking for inter-conflicts...
:: lzo and lzo2 are in conflict. Remove lzo2? [y/N] y

그림1.png


 * ncurses 패키지의 버전 문제가 가끔 발생하는데 이럴땐 심볼릭 링크를 걸어 해결하도록 하자

# ln -s /usr/lib/libncursesw.so.6  /usr/lib/libncursesw.so.5




2. mjpg_streamer 패키지 설치

* HDMI로 RaspberryPi를 모니터에 연결해서 출력을 볼 수도 있지만, 모니터가 없다는 가정하에 RaspberryPi내에서 웹서버를 통해 영상을 출력할 것임

가. mjpg_streamer는 ArchLinux에서 패키지 형태로 제공했었으니 어느 순간부터 제공이 중단됨

나. github에서 소스코드를 받아 직접 컴파일 해야 함

# cd ~
# git clone https://github.com/liamfraser/mjpg-streamer
# cd mjpg-streamer/mjpg-streamer-experimental
# vim Makefile
i(편집모드로 변경)
(PLUGINS += input_file.so 을 찾아 주석 제거)
Esc(명령모드로 전환)
:wq(저장 후 종료)
# make all



3. 라이브러리 및 바이너리 파일, 웹페이지 파일 복사

# cp *.so /usr/lib
# cp mjpg_streamer /usr/bin
# mkdir -p /usr/share/mjpg_streamer
# cp -r www /usr/share/mjpg_streamer/
* 여기서는 직접 복사하였지만 왠만해서는 심볼릭 링크를 걸거나 LD_LIBRARY_PATH, PATH에 해당 경로를 추가하는 것을 권장함


4. 테스트

가. 웹서버가 실행될 것이므로 RaspberryPi의 IP 주소를 알고 있어야 함.

나. ifconfig 명령을 통해 IP 주소를 알아냄

# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.168  netmask 255.255.255.0  broadcast 192.168.1.255
        ether b8:27:eb:5a:28:58  txqueuelen 1000  (Ethernet)
        RX packets 1932761  bytes 247503741 (236.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3830543  bytes 1284469531 (1.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 0  (Local Loopback)
        RX packets 8429  bytes 110333232 (105.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8429  bytes 110333232 (105.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

* 여기서는 유무선공유기를 통해 RaspberryPi가 유선으로 연결되어 있으므로 eth0 인터페이스에 할당된 IP 주소(192.168.1.168)를 사용하면 됨

* 만약 WiFi를 통해 AP에 접속중이라면 eth0 인터페이스가 아닌 ra0 또는 wlan0 인터페이스의 IP 주소를 사용해야 함


다. RaspberryPi에서 아래와 같이 입력

# mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 5 -n" -o "output_http.so -p 8080 -w /usr/share/mjpg_streamer/www"

* 여기서 /dev/video0는 USB 웹캠의 장치파일이며 PiCam을 사용하거나 여러개의 USB 웹캠을 사용할 경우엔 이 경로가 달라질 수 있음

* 포트 번호 8080으로 웹서버의 서비스를 받을 수 있도록 했기 때문에 웹 브라우저에서 접속할 때도 8080 포트를 사용해야 함


라. 웹 브라우저에서 접근

캡처08.PNG

* 위에서 8080 포트로 웹서버가 작동중이기 때문에 웹 브라우저에서도 8080로 접근해야 함

* RaspberryPi의 IP 주소가 192.168.1.168이고 포트번호가 8080이었기 때문에 http://192.168.1.168:8080 으로 접속하여 확인




--

OpenCV를 이용한 영상처리 실습 - 01 개발환경 소개

OpenCV를 이용한 영상처리 실습 - 03 화면에 + 모양의 선 그리기

OpenCV를 이용한 영상처리 실습 - 04 화면을 그레이스케일로 만들기

OpenCV를 이용한 영상처리 실습 - 05 영상에서 얼굴 검출하기

위로