Android 어플에서 객체인식 및 특징점 검출, 카메라 핸들링, 이미지 처리 등 많은 부분에서 유용하게 쓰이는 OpenCV가 Android로 포팅이 가능한 android-opencv가 code.google.com에 올라와서 간단히 정리해 본다.
이 내용은 http://code.google.com/p/android-opencv/ 내용을 기반으로 정리한 것이다.
위 code.google.com의 페이지에 보듯이 opencv를 android에 포팅하기 위해서는 미리 준비해야 하는 것들이 있다.
일단 window 환경에서 포팅하는 것으로 정리한다.
1. android-opencv 포팅을 위한 사전 준비
- android-sdk : 기본으로 준비해야 함.
www.android.com에서 다운받아서 설치하면 된다.
- android-ndk : crystax ndk r4 이용
이 내용은 http://code.google.com/p/android-opencv/ 내용을 기반으로 정리한 것이다.
위 code.google.com의 페이지에 보듯이 opencv를 android에 포팅하기 위해서는 미리 준비해야 하는 것들이 있다.
일단 window 환경에서 포팅하는 것으로 정리한다.
1. android-opencv 포팅을 위한 사전 준비
- android-sdk : 기본으로 준비해야 함.
www.android.com에서 다운받아서 설치하면 된다.
- android-ndk : crystax ndk r4 이용
code.google.com의 android-opencv는 Android의 기본 NDK로는 build가 되지 않는다.
Down : http://www.crystax.net/android/ndk-r4.php
- cygwin
windows에서 가상 리눅스 환경을 만들어준다.
Down : http://www.cygwin.com/
- android-opencv source
SVN을 이용하여 checkout 받는다. (http://android-opencv.googlecode.com/svn/trunk/)
SVN에 접속하면 opencv, samples 모두 사용한다. 먼저 opencv를 빌드 한후에 samples를 빌드하여
테스트한다.
2. cygwin 설치
- 먼저 android-opencv를 빌드하기 위해 리눅스 환경을 만들기 위해 다운로드 후 설치한다.
- 설치하는 절차는 간략히 설명한다. 부족하면 검색하면 좋은 자료가 많다.
- [Choose A Download Site] 화면이 나올때 까지는 기본 설정 또는 경로만 변경하고 지나가면 된다.
- [Choose A Download Site]도 적당한 사이트를 선택하고 Next (난 ftp://ftp.kaist.ac.kr을 선택했음.)
- 다음 화면이 중요하다. 리눅스 환경에서 android-opencv를 빌드 시 필요한 패키지를 선택하여
설치하는 부분이다.
너무 걱정하지 말자. 모두 설치 후 필요한 패키지는 다시 설치파일을 실행하여 똑같이 진행해서 이 화면에서
다시 선택하여 설치가 가능하다.
설치 할 항목
Devel : gcc-core, gcc-g++, make, swig
Editor : vim - 그 다음부터는 그냥 두면 설치가 된다.
- 설치 완료 후 실행하게 되면 리눅스 환경의 콜솔 창이 하나 뜨고 최초 실행 시 window 로그인 계정으로
/home/[user] 형식으로 폴더가 생성이된다. 기본 사용 쉘은 bash shell 이다.
3. crystax ndk r4
- 해당 사이트에서 다운로드 받아 적당한 곳에 압축을 풀면된다.
- 압축을 푼 후 cygwin이 설치 된 /home/[user]/ 아래 복사를 한다. cygwin 환경에서 빌드를 진행하기 위함.
- 저의 빌드 환경에서의 패스는 /home/ukzzang/android-ndk-r4-crystax 임.
4. android-opencv source
- svn을 이용하여 checkout 받은 뒤 체크 받은 소스를 cygwin이 설치 된 /home/[user]/ 아래에
android-opencv로 복사한다. 경로를 변경해도 무방하다.
이로써 android-opencv를 빌드하기 위한 사전 준비 작업은 끝났다.
5. android-opencv build
5.1. cygwin 환경 설정
- windows 환경에서 패스 설정
[바탕화면 컴퓨터] -> [설정] -> [고급 시스템 설정] -> [환경변수]의 path 부분에
C:\cygwin\home\ukzzang\android-ndk-r4-crystax;C:\cygwin\bin; 추가한다.
- cygwin 실행 후 bash 환경 파일 수정 (.bashrc 파일 수정 후 적용)Down : http://www.crystax.net/android/ndk-r4.php
- cygwin
windows에서 가상 리눅스 환경을 만들어준다.
Down : http://www.cygwin.com/
- android-opencv source
SVN을 이용하여 checkout 받는다. (http://android-opencv.googlecode.com/svn/trunk/)
SVN에 접속하면 opencv, samples 모두 사용한다. 먼저 opencv를 빌드 한후에 samples를 빌드하여
테스트한다.
2. cygwin 설치
- 먼저 android-opencv를 빌드하기 위해 리눅스 환경을 만들기 위해 다운로드 후 설치한다.
- 설치하는 절차는 간략히 설명한다. 부족하면 검색하면 좋은 자료가 많다.
- [Choose A Download Site] 화면이 나올때 까지는 기본 설정 또는 경로만 변경하고 지나가면 된다.
- [Choose A Download Site]도 적당한 사이트를 선택하고 Next (난 ftp://ftp.kaist.ac.kr을 선택했음.)
- 다음 화면이 중요하다. 리눅스 환경에서 android-opencv를 빌드 시 필요한 패키지를 선택하여
설치하는 부분이다.
너무 걱정하지 말자. 모두 설치 후 필요한 패키지는 다시 설치파일을 실행하여 똑같이 진행해서 이 화면에서
다시 선택하여 설치가 가능하다.
설치 할 항목
Devel : gcc-core, gcc-g++, make, swig
Editor : vim - 그 다음부터는 그냥 두면 설치가 된다.
- 설치 완료 후 실행하게 되면 리눅스 환경의 콜솔 창이 하나 뜨고 최초 실행 시 window 로그인 계정으로
/home/[user] 형식으로 폴더가 생성이된다. 기본 사용 쉘은 bash shell 이다.
3. crystax ndk r4
- 해당 사이트에서 다운로드 받아 적당한 곳에 압축을 풀면된다.
- 압축을 푼 후 cygwin이 설치 된 /home/[user]/ 아래 복사를 한다. cygwin 환경에서 빌드를 진행하기 위함.
- 저의 빌드 환경에서의 패스는 /home/ukzzang/android-ndk-r4-crystax 임.
4. android-opencv source
- svn을 이용하여 checkout 받은 뒤 체크 받은 소스를 cygwin이 설치 된 /home/[user]/ 아래에
android-opencv로 복사한다. 경로를 변경해도 무방하다.
이로써 android-opencv를 빌드하기 위한 사전 준비 작업은 끝났다.
5. android-opencv build
5.1. cygwin 환경 설정
- windows 환경에서 패스 설정
[바탕화면 컴퓨터] -> [설정] -> [고급 시스템 설정] -> [환경변수]의 path 부분에
C:\cygwin\home\ukzzang\android-ndk-r4-crystax;C:\cygwin\bin; 추가한다.
vi ~/.bashrc 실행 (사용자 home 경로에서 실행)
- 아래 내용을 추가한다.
export PATH=$PATH:/home/ukzzang/android-ndk-r4-crystax
export ANDROID_NDK_ROOT=/home/ukzzang/android-ndk-r4-crystax
source ~/.bashrc 환경 설정 정보 재적용
5.2. android-opencv build
- cd /home/ukzzang/android-opencv/opencv 로 이동
- sh build.sh
- 뭐 빌드는 아주 간단하죠 ... build 하는데 시간이 꽤 걸리는 편이다. 천천히 기다리자
- 빌드가 완료되면 ....../opencv/android/libs/armeabi 아래에 libopencv.so 파일이 생성된다.
여기까지로 android-opencv 빌드가 끝났다 ... 그럼 다음올 svn에서 받은 samples의 CVCamera를 빌드하여
실행해서 테스트 해보겠다.
6. android-opencv test
6.1. CVCamera Sample Build
- 테스트는 samples 안에 있는 CVCamera Project를 이용하여 진행하겠다.
- 먼저 CVCamera Project를 NDK로 빌드한다. android-opencv 빌드와 동일하다.
- ......./samples/CVCamera로 경로 이동
- sh build.sh 실행하면 빌드 된다.
혹시 경로부분에서 오류가 발생하면 jni 폴더의 Android.mk 파일을 vi로 열어서 수정하고 다시 빌드.
- 위 화면처럼 빌드가 완료되면 libs/armeabi 아래에 libcvcamera.so 파일이 생성되어 있다.
- 프로젝트 빌드 끝 ... 이제 Eclipse에서 프로젝트를 생성하고 실행만 해보면 된다.
6.2. Eclipse Project Create & Test
- Eclipse에 Android Project를 생성하고 cygwin에서 빌드한 CVCamera를 Import 한다.
- 빌드 한 android-opencv 밑에 가면 android로 빌드하면서 생성 된 폴더가 있는데 안의 jni 밑의 Java
파일들도 Import 한다. 그리고 당연히 libandroid-opencv.so 파일도 프로젝트의 libcvcamera.so가 있는
위치에 복사한다.
- 프로젝트를 폰이나 에뮬에서 테스트하면 된다.
- 카메라 뷰가 보이며, 뷰에 보이는 영상이 메뉴에서 선택한 알고리즘에 따라 특징 점들이 추출되어 보이게 된다.
이걸로 정말 끝 ...