'2014/03/14 글 목록 :: Horizontal Grays S2

http://blog.naver.com/PostView.nhn?blogId=budlbaram&logNo=50169171521 를 참고. (감사합니다)


1. OpenCV를 위한 라이브러리 설치

 터미널 열고 (원본에는 한꺼번에 타이핑 하는 것으로 나와있는데 혹시 모를 오류를 대비하여 난 하나씩 설치하였다.)


sudo apt-get install cmake

sudo apt-get install libtbb2

sudo apt-get install libtbb-dev

sudo apt-get install libgtk2.0-dev

sudo apt-get install libjpeg62-dev

sudo apt-get install libjasper-dev

sudo apt-get install libtiff4-dev

sudo apt-get install ffmpeg

sudo apt-get install libavformat-dev

sudo apt-get install libswscale-dev

sudo apt-get install libgstreamer0.10-dev

sudo apt-get install libgstreamermm-0.10-dev

sudo apt-get install libdc1394-22-dev

sudo apt-get install libv4l-dev

sudo apt-get install libopenexr-dev

sudo apt-get install libxine-dev

sudo apt-get install libunicap2-dev

sudo apt-get install libucil2-dev


별문제 없이 설치 되는 걸로 보아 그냥 이렇게 해도 된다. (나도 참 무식하다 ㅋ)


sudo apt-get install cmake libtbb2 libtbb-dev  libgtk2.0-dev libjpeg62-dev libjasper-dev libtiff4-dev ffmpeg libavformat-dev libswscale-dev libgstreamer0.10-dev 

libgstreamermm-0.10-dev libdc1394-22-dev libv4l-dev libopenexr-dev libxine-dev libunicap2-dev libucil2-dev


2. OpenCV 2.4.8 (현재) 설치


 http://opencv.org/downloads.html 에 가서 OpenCV2.4.8 for Linux/Mac 클릭하면 OpenCV 다운이 시작된다.


3. 압축을 풀고 폴더 이동

 opencv-2.4.8.zip 을 압축을 풀고 다운로드 폴더에 받았으므로 /home으로 이동


4. 압축을 풀어 놓은 opencv-2.4.8 폴더에 make를 위한 release 폴더 생성

mkdir release


5. cmake


sudo cmake -D BUILD_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_TESTS=ON -D WITH_TBB=ON -D WITH_UNICAP=ON -D WITH_XINE=ON ../

(맨끝에 ../ 는 압축을 풀어놓은 디렉토리. 현재 opencv-2.4.8 폴더 안에 release 폴더를 만들었으므로 ../ 으로 씀


 시간 많이 걸린다. ^^;;;


6. OpenCV 설치

sudo make install


7. 라이브러리 링크 및 패키지 확인


라이브러리 링크

sudo ldconfig


패키지 확인

pkg-config --cflags opencv

pkg-config --libs opencv


다음과 같은 결과가 나온다




8. 이클립스 설치

http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/junosr2

위에서 리눅스32bit용 다운로드 (현재 Juno SR2 버전)


다운받으면 압축풀면 됨


9. java 설치

sudo apt-get purge openjdk

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt get install oracle-java7-installer


여기서 openjdk는 안깔려있어서 없는 package라고 나오는 것 같고

마지막 oracle-java7-installer 실행하면 무슨 license 어쩌구 binary 어쩌구 code 어쩌구 에서 accept 해줘야 되는듯하다.

(귀찮아서 자세히 안읽어봄... 봐도 모름 ㅋ)


10. 이클립스 바로가기

 텍스트 편집기를 이용해서 /usr/share/applications/eclipse.desktop 파일 생성

sudo gedit /usr/share/applications/eclipse.desktop

그리고 다음의 내용 복사해서 붙여넣기


[Desktop Entry]

Encoding=UTF-8

Name=Eclipse

Comment=Eclipse IDE

Exec=/home/jslee/eclipse/eclipse

Icon=/home/jslee/eclipse/icon.xpm

Terminal=false

Type=Application

Categories=GNOME;Application;Development;

StartupNotify=true


난 /home/jslee/ 에 eclipse 압축을 풀어놓았으므로 위의 경로로 썼다.


11. OpenCV 테스트


 1) 프로젝트 만들기

    File / New / C++ Project 하면



일단 Project Name을 작성하고 (여기서는 OpenCV_Test)

Project Type: Executable / Hello World C++ Project

Toolchains : Linux GCC

그리고 Finish하면 다음과 같이 기본코드가 생성된다.


 2) OpenCV Header 및 Library 



 위 그림에서와 같이 Project Explorer 에서 프로젝트를 선택하고 우측 마우스 버튼 클릭 / Properties 를 선택한다.




  위 그림과 같이 C/C++ Builder 에서 Settings 를 선택하고

  GCC C++ Compiler에서 Includes를 선택한 뒤 OpenCV Header가 있는 /usr/local/include 의 경로를 넣어준다.



  마찬가지로   위 그림과 같이 C/C++ Builder 에서 Settings 를 선택하고

  GCC C++ Linker에서 Libraries를 선택한 뒤 

  Library 에는 사용할 Library 이름 opencv_core, opencv_highgui 를 입력

  그리고 Library search path에는 OpenCV library가 있는 /usr/local/lib 의 경로를 넣어준다.


  3) 소스 작성

   OpenCV_Test.cpp를 아래와 같이 작성하고 build 후 실행하면 아래의 화면과 같이 test.png를 opencv를 이용하여 화면에 출력한다.


 * test.png가 프로젝트 폴더 안에 있어야 한다.

 ** jpg는 안되더라. 처음에 test.jpg로 했는데 안되서 png로 했더니 된다. 이유는 모르겠지만 opencv의 cvLoadImage()에서 jpg는 load 하지 못하는것 같다.





  







요새 리눅스 환경에서 또 이미지프로세싱 하느라 이것저것 캡춰해서 블로그에 올려두는데

캡쳐프로그램으로 정확히 캡쳐하기 힘든 경우가 있다.

이때 Print Screen을 이용하려고 했는데...

이놈이 도무지 동작을 안한다. --;;;


여튼 그래서 뒤적이니

http://ioriy2k.pe.kr/archives/1221 에 좋은 정보!!


즉 Linux Kernel Option에서 Sys Rq. 가 활성화 되어 있어서 Print Screen을 누르면 Sys Rq. 로 인식한다는 것이다.


이 때의 해결책


sudo sysctl -w kernel.sysrq=0 하면 커널의 Sys Rq 가 비활성화 된다.

근데 그러면 부탕할 때마다 해줘야 하니까.

nano /etc/sysctl.d/10-disable-sysrq.conf 를 만든뒤


kernel.sysrq=0


을 쓰고 저장한뒤

start procps 하면 OK!!



꽤 오래전에 그 당시 기준 나름 싸게, 현 시점 기준 비싸게(ㅋㅋ)주고 산 넷북이 하나 있다.


이름하야 Acer Aspire-one AOA150 (응? AOA?? AOA 좋음 ㅋㅋㅋ)


사양이 

CPU : Intel Atom N270 1.6Ghz (1세대 아톰)

RAM : 1G

HDD : 160G

Monitor : 8.9인치 (1024 * 600) <- 이 세로 600 해상도가 아주 사람 미치게 한다 


여튼 이놈의 넷북이 아는 사람은 알겠지만 그 성능이 참 안타깝고도 안타까워 딱히 활용하기가 지랄같다.

그래서 해본게


1. 윈도우XP에 외장하드 붙여서 네트워크 하드로 써보자

 - 속도 1Mbps 나옴.. 너무 느림


2. Xpenology 설치해서 NAS로 써보자.

 - 다운받을 수 있는 모든 버전별 Xpenology 이미지들 다 적용안됨 T.T

  (일반PC에 설치할 수 있는 무료 NAS 운영체제가 몇가지 있는데 Xpenology , Free4Nas, OpenMediaVault 등이 있다.)

 - 그 와중에 예전에 해외구매 해두었던 Belkin 공유기에 DD-WRT에 Tomato 핵펌 올리는데 성공, 여기에 외장하드 (Ext3 포맷하고) 붙이니 속도 10MBps 가까이 나옴 

 


3. 리눅스 중에 가볍다는 Mint Linux 설치해보자.

  - Linux Mint 16 Petra Mate 32Bit 설치 성공

 - Interface도 괜찮고 나름 나쁘지 않게 돌아가나 저놈의 세로 해상도 600은 웹서핑하기도 지랄맞음 T.T



그렇다면 요놈을 홈시어터용 PC로 만들어보자고 결정하고 XBMC 설치

- XBMC 설치는 잘 되나 1080P  동영상 안돌아감, 720P 동영상도 힘들어함


그래서 대체 이놈을 뭐에 써먹나 고민중에 내린 결론이 뮤직서버로 만들면 어떨까 해서 검삭해보니

리눅스를 뮤직 스트리밍 서버로 사용하는 사람이 좀 있었다!!!


여튼 그래서 Mint Linux 에 MPD(Music Player Daemon) 을 설치하기로 결정!!


1. ALSA 오디오 출력 설치 (기본적으로 깔려있을꺼임!)

 


역시 이미 깔려있슴


2. MPD와 MPD Client 설치 

 MPD Client Program은 뒤적여보니 ncmpc를 많이 쓰나 봄




이렇게 설치


3. MPD 설정

nano /etc/mpd.conf

로 mpd 설정파일 편집한다

(nano 말고 vi를 쓰건 뭘 쓰건 텍스트 편집기 사용은 자기 마음)






bind_to_address 에서 "localhost" -> "0.0.0.0" 으로

밑에 #port "6600" -> port "6600" (#제거)


포트6600이 있는 걸로 봐서 원격에서 접속시 공유기 포트포워딩 mpd포트 6600번 해주면 될것 같음



#metadata_to_use 에서 #제거하고 metadata_to_use 로 metadata 사용 가능하게 만들기




심볼릭링크를 이용해서 음악을 가져오기 위해서

follow_outside_symlinks 와 follow_inside_symlinks 앞에 # 제거

(심볼릭 링크가 뭔진 아직 모르겠슴.. 이럴때 걍 시키는 대로 하는거임 ^^;;)




원격접속시 사용할 비밀번호 설정

사용하고자 한다면 #password 앞에 # 제거 그래고 "password@read,add ..." 에서 password 부분에 원하는 암호 입력



input 비활성화.. 앞에 다 #붙여서 비활성화 시킨다. 

물론 입력기능을 쓰고자 한다면 알아서 쓰시길



오디오 출력관련

첨에 설치확인했던 것처럼 오디오 출력은 alsa를 이용한다. 여기서 type "alsa"를 제외하곤 다 비활성화 되어있음, 그대로 쓰면 됨

하나 확인해야할 것은 device다.

일단 출력이 하나고 기본출력이면 그냥쓰면 될것 같은데 난 일전에 구매한 USB-DAC를 사용하고자 한다. 

아직 그걸 붙인건 아니지만 그걸 붙이면 수정해줘야 할듯


그렇다면 자기 device 확인 방법은 일단 편집기 저장하고 터미널로 돌아가자


터미널에서 aplay -l 해보면 장치목록이 나온다.

여기서 보면 0번 카드 Intel HDA 어쩌구 저쩌구

즉 위에 mpd.conf 파일의 출력 관련 항목에서

device "hw:0,0" 에서 앞의 0이 출력장치 번호이다.


나중에 USB-DAC를 연결하고 장치목록을 확인해보니 1번이더라 그리고 그쪽으로 출력을 하고 싶다면

device "hw:1,0" 이라고 하면 된다.... 될꺼다 ^^;



httpd 출력 설정

보아하니 외부에서 http로 접속할 때 음악의 출력을 내보내주는 부분에 대한 설정인듯하다.

일단 이놈은 사용해야 할 듯해서 #을 지워서 사용가능하게 했다.

encoder 항복에서 vorbis는 ogg포맷 lame은 mp3포맷이라는데 ogg포맷은 문제가 생겼다고 해서 나도 mp3포맷으로 설정

bitrate 192kbps, format 44100:16:1 이면 CD음질 일게다.




Internal Buffer Size 설정

audio_buffer_size의 앞에 #을 제거하여 사용하도록 설정하고 원래 "2048" 이었는데 4배인 "8192"로 설정했다.

(이게 뭐 얼마나 리소스 잡아먹겠어 하는 맘임.. 결과는 아직 모르겠슴 ㅋ)


자 이렇게 일단 설정을 마치고

네트워크 설정을 해야하는데 우선 지금 회사 내부네트워크 이므로 별다른 설정없이 테스트해 볼 생각


ifconfig 로 현재 연결된 무선네트워크의 ip를 보니 192.168.0.15 다


기억해두고 리부팅


4. MPD 동작 확인



sudo /etc/init.d/mpd restart로 확인했는데 266라인에서 뭐가 문제가 생겼단다.. --+


자 그럼 다시 nano /etc/mpd.conf 로 문제의 266라인을 보자.



아.. 이런 #audio_output 에서 #을 안지웠다. 그래서 지우고

sudo /etc/init.d/mpd restart




오.. 이제 문제없이 MPD가 시작되었다.!


5. 음악파일 MPD폴더에 링크

테스트를 위해 다운 받은 음악폴더를 MPD폴더에 링크 시킨다.

여기서 외장하드 등의 다른 장치는 /media/장치/음악폴더 를 이용하여 링크시킨다.


링크는 ln -s 음악이 들어있는 경로 및 폴더 /var/lib/mpd/저장할링크이름 으로 한다.


나는 테스트할 음악을 /home/jslee/music에 넣어두었고 저장할 링크이름은 imusiclink로 했다.



6. ncmpc로 데이터베이스 업데이트

그리고 터미널에서 ncmpc 실행하고 아까 설정한 비밀번호 입력하여 들어간뒤 Ctrl + u 하면 데이터베이스를 업데이트 하는데...



이런 아무것도 안뜬다 ㅠㅜ


아마 음악파일 MDP폴더에 링크시키는 것에 문제가 있지 않았는데 그건 아니고 저건 그냥 playlists 재생한게 없어서 안뜨는거

3번 열람을 누르면 아까 링크한 음악들이 보인다 ㅋ


7. 그런데 ncmpc 가 불편해서 그런지 sonata라는 클라이언트를 쓰나보다. 아마 GUI를 지원해서 그런듯

sudo apt-get install sonata

 위와 같이 sonata 설치


설치가 완료되면  sonata 실행하고 아까 입력한 비밀번호 치면



위와 같이 화면이 뜨고 Library에 아까 링크한 음악들이 표시된다.

재생할 음악을 선택하나 뒤 우측 마우스 버튼 클릭해서 add 하면 Current탭에 음악이 표시되고 이 음악을 재생시킬 수 있다.

이렇게 sonata 실행해서 음악감상하면 끝....

끝???


아.. 내가 원한건 아이폰이나 아이패드등 다른 기기를 클라이언트로 이용하는 것인데...


8. 다른 기기를 클라이언트로 사용

 아이폰 : mpod

 아이패드 : mpad

 안드로이드 : mpdroid

라는 MPD 클라이언트 어플이 있단다.


 우선 아이폰에 mpod 설치하고 실행하고

 Connections/Server에 넷북의 무선 IP 192.168.0.15 입력

 Connections/Password에 아까 비밀번호 입력해서 연결하고

 Select Music/song/playlist 를 누르니

오~ 아까 그 음악들이 보인다.

여기서 재생하면 끝


물론 이것은 내부네트워크니까 그냥 한거고

아까 말한것처럼 외부에서도 사용하기 위해서는 공유기 포트포워딩 하고 DDNS 받아서 설정해야할 것이다.


아래 링크 참고해서 작성 (감사합니다)

http://ko.goldenears.net/board/ST_TipInfo/3155439




+ Recent posts