영상처리 및 비전에 유용하게 쓰이는 OpenCV가 안드로이드 용으로도 사용할 수 있게 포팅된 버전입니다.

사실 안드로이드 자체적으로 영상처리를 하면 너무나 느린 탓에 NDK를 알아보게 되었고,

급기야 NDK로 포팅된 OpenCV를 활용하게 되었습니다.

오늘은 우선 환경 설정하는 방법에 대해 자료 정리를 해보겠습니다.

아래의 블로그를 참조하였으며 NDK 최신 버전인 r5c를 이용하여 환경을 구축해보려고 하였으나

빌드시 에러가 발생하여 그냥 r4로 빌드환경을 구축해보았습니다.

참고 : ukzzang's blog

1. Android용 OpenCV 포팅을 위한 준비 단계
- 안드로이드 SDK를 다운
- 안드로이드 NDK를 다운 (Android NDK r4를 다운)
(주의! SVN을 이용해 Android용 OpenCV 받게 되면 Android NDK r4 개발환경에 맞춰져 있습니다)
- Cygwin 다운 (windows에서 가상의 리눅스 콘솔을 사용하게 만들어 주는 프로그램)
- 안드로이드 OpenCV Source 다운
(SVN을 이용하여 checkout : http://android-opencv.googlecode.com/svn/trunk/ )

2. Cygwin 설치
- 설치시 Devel의 항목 아래와 같이 install로 만들어 모두 설치.
- 그리고 Search항목에 vim을 검색하여 설치할 수 있도록 체크해 줍니다.
(Editor : vim )


3. NDK 설치
- 따로 설치할 것은 없고 아무 곳에다가 나둬도 되지만, 저는 C:\cygwin\home\LEE\ 아래에 두었습니다.
LEE는 제 컴퓨터 계정 이름입니다.

4. Windows 환경 설정
- Windows 시스템 등록정보의 고급에서 아래의 path를 추가합니다.

C:\cygwin\usr\sbin;C:\cygwin\bin;C:\cygwin\home\LEE\android-ndk-r4-crystax;


- 위의 환경변수 설정이 완료되었다면 cygwin을 켜주시면 됩니다. 켜놓으셨다면 반드시 재시작 하세요.

5. Android용 OpenCV 빌드하기

- cd /cygdrive/c/cygwin/home/LEE/opencv
로 이동하여 빌드를 합니다.
- sh build.sh (빌드 시작)


- 시간이 조금 많이 걸립니다. 빌드가 완료되면 libopencv.so 파일이 \opencv\android\libs\armeabi에 생성되는데 이 libopencv.so파일을 이용하여 안드로이드에서 opencv를 사용하실 수 있습니다.

6. Android 샘플 테스트

- 테스트는 SVN에서 다운받은 samples 폴더의 CVCamera 프로젝트를 이용합니다.
- Cygwin을 이용하여 CVCamera 폴더로 이동한 뒤 sh build.sh로 빌드한다.


- 빌드가 완료되면 libcvcamera.so 파일이 생성되있을 것 입니다.
- 그럼 이제 이클립스를 켜고 샘플 예제를 돌려보도록 하겠습니다.
- 우선 아래와 같이 CVCamera를 Import 시켜주세요.
- 처음 빌드를 하게되면 처음에는 수도 없이 에러가 날 것입니다.
빌드가 안되는 이유는 OpenCV와 관련된 파일들이 덜 추가되었기 때문인데 아까 android-opencv를 빌드하면서 생성한
android아래에 있는 opencv 폴더의 java파일들을 import시켜줍니다.
- CVCamera\src\com\theveganrobot\cvcamera\ 아래에 있는 jni폴더의 java파일들도 마져 추가를 해줍니다.
패키지 명이 틀리다면 일일히 수정해주시면 됩니다.


- 그리고 libandroid-opencv.so을 위와 같이 libcvcamera.so가 있는 폴더에 넣어주고 빌드를 해주시면 됩니다.
- 그럼 이제 끝이 났군요. 빌드를 해주면 아래와 같은 화면을 보실 수 있습니다.^^
- 수고하셨습니다.



>> 추가 : Windows CMD환경에서 OpenCV를 포팅하려고 하신다면 아래 링크를 참조. http://www.cyworld.com/adorable_man/7785702

출처: http://golee07.tistory.com/349
,