블로그 이미지
RyuEK
-

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice

Tag

Linux Kernel 리눅스 커널 Android Platform 안드로이드 플랫폼 Embedded Linux 임베디드 리눅스 Fast Boot Time Kernel Tunning 커널 튜닝 성능 튜닝 Device Driver 디바이스 드라이버 NDK / JNI Android Application 안드로이드 애플리케이션
2012.11.27 03:18 Android/OpenCV

해당 방법은 OpenCV 홈페이지의 안드로이드용 OpenCV 튜토리얼 문서를 바탕으로 작성하였으며 기존 블로그들에 있던 방법, crytax NDK를 이용한 cygwin에서의 ndk-build 등등... 의 방법과는 달리

 

최신 ndk를 이용하여(현재 2012년 12월 2일 기준) 이클립스 상에서 c/c++ 파일을 빌드하여 so 파일까지 만들어 이클립스 상에서 모든 것이 해결되는 방법입니다??? 자 출발해 봅시다!!!

 

 

Link

openC : http://opencv.org/platforms/android.html

Java API : http://docs.opencv.org/java/

Java Native Interface : http://en.wikipedia.org/wiki/Java_Native_Interface

Android Camera : http://developer.android.com/guide/topics/media/camera.html

 

본 문서는 OpenCV Docs 에 있는 튜토리얼 문서를 바탕으로 작성하였습니다. 설치과정에서 정확한 이유까지는 확인을 못 할 것이며, 따라하기식의 문서가 될 것으로 예상됩니다...

 

1. Sun JDK6

Java SE 다운로드 페이지에서 해당 OS에 맞는 JDK를 다운로드 및 설치 / 환경변수 설정을 완료합니다.

 

2. Android SDK

가장 최근의 안드로이드 SDK를 설치합니다. http://developer.android.com/sdk/index.html

 

OpenCV의 최소 지원 플랫폼은 Android2.2 (API 8) 입니다.

 

공식 튜토리얼 문서에서는 Android 3.0 (API 11) 이상의 버전을 추천합니다.

 

3. Eclipse IDE

Eclipse 3.7(Indigo) 또는 그 이상의 버전을 설치합니다.

 

4. ADT 플럭그인

본 문서에서는 설치과정을 생략합니다.

 

======== 여기까지 자바 개발을 위한 설치 과정을 마무리 합니다.

1. NDK

C++ 코드를 컴파일 하기위해 가장 최근의 NDK를 다운 받습니다. http://developer.android.com/tools/sdk/ndk/index.html

 

(2012년 12월 기준 android-ndk-r8b 버전을 사용하였습니다.)

 

안드로이드 NDK 시작 전 ndk 폴더의 docs 폴더에 있는 문서 파일 중

ANDROID-MK.html

APPLICATION-MK.html

NDK-BUILD.html

CPU-ARM-NEON.html

CPLUSPLUS-SUPPORT.html,

PREBUILTS.html

문서를 읽어 주세요. 권고 사항

 

2. CDT plugin

이클립스 안에서 C++ 코드를 컴파일 하기위해 CDT 플러그인을 설치합니다.

 

Help -> About Eclipse SDK -> Installation Details

 

 

 

 

 

만약 최근의 ADT 플러그인을 설치하셨다면 이미 CDT 플러그인을 설치할 필요가 없을 수 있습니다. 즉 C++ 컴파일 환경이 갖춰진 상태이실 겁니다.

 

자세한 설치과정은 생략하겠습니다.

 

===============================================================================================

 

1. 이클립스의 새로운 프로젝트 생성 및 OpenCV-2.4.3-android-sdk.zip 파일 압축해제

 

OpenCV-2.4.3-android-sdk.zip 파일을 이클립스로 생성한 새로운 프로젝트 폴더 아래에 해제합니다.

 

2. OpenCV 라이브러리 및 샘플소스를 Import 합니다.

 

 

 

File -> Import -> General -> Existing Projects into Workspace

 

 

프로젝트 내부에 압축해제 했던 OpenCV-2.4.3-android-sdk 를 Import 했습니다.

 

 

처음 표시해둔 부분은 OpenCV Library 입니다.

두번째 체크부분은 프로젝트 폴더로 복해해봤습니다.

 

 

 

에러가 수북하군요...

3. 프로젝트의 OpenCV Library - 2.4.3 에 대한 JDK 1.6 설정과 Is Library 체크를 합니다. 방법은 다음과 같습니다.

 

 

 

 

 

OpenCV Library - 2.4.3 폴더에서 우클릭하여 Properties 메뉴를 활성화한 하면입니다.

활성화된 메뉴트리에서 Android 선택 후 빌드 타겟은 저의 경우 4.1.2 선택하였습니다. 튜토리얼 문서에 따르면 3.0 이상을 권고하더군요.

그리고 Library 체크박스에 Is Library 부분을 체크한 후 적용합니다.

 

 

메뉴 트리상의 Java Compiler 메뉴에서 위 그림과 같이 1.6으로 설정합니다.

설정 이전에는 1.5로 설정이 되 있더군요.

 

 

뙇!!!! OpenCV Library - 2.4.3 의 오류가 없어진 것을 확인 할 수 있습니다.

 

4. 기본적으로 존재하는 Sample 들은 OpenCV Library -2.4.3을 이용한 순수한 자바 프로젝트와 JNI를 포함하나 프로젝트로 이뤄져 있습니다.

 

 

그 중 Tutorial 2 는 자바 코드만으로 이루어져 있으며

Tutorial 4 의 경우 jni를 포함한 프로젝트로 구성되어 있습니다.

 

 

4-1-1. OpenCV Tutorial 2 - Use OpenCV Camera 를 기준으로 환경 구성해 보겠습니다.

 

 

 

간단한 작업입니다.

우선 Tutorial 2 프로젝트 폴더를 우클릭하여 Properties 메뉴로 들어온 화면입니다.

그림과 같이 Target은 4.1.2로 선택해주었으며

Library 부분에 OpenCV Library를 추가해 주기 위해 Add를 선택하여 라이브러리 추가를 합니다.

 

혹시 기존에 추가되어 있던 라이브러리가 있었다면 Remove로 제거한 뒤 Open CV 라이브러리를 추가해줍니다. 

 

 

 

간단하게 에러가 사라졌고 Tutorial 2 샘플을 실행한 화면입니다.

 

 

4-2-1. JNI 코드를 포함한 OpenCV Tutorial 4 - Mix Java+Native OpenCV 프로젝트의 설정 후 실행을 해보겠습니다.

 

4-2-2. 문제는 디폴트로 잡혀 있던 NDK 라이브러리경로와 OpenCV SDK 경로 문제로 인한 에러입니다. 수정해보겠습니다.

 

 

설정 이전에 에러 상태입니다.

 

 

 

동일하게 프로젝트 선택하여 우클릭을 통해 Properties 메뉴로 오신다음 그림과 같이 설정합니다.

 

모듈 생성을 위해 cygwin을 이용하지 않고 이클립스에서 바로 c/c++ 파일에 대해 바로 빌드하기 위한 부분 입니다. C/C++ Build 메뉴트리를 선택하신 후 그림과 같이 설정합니다.

${NDKROOT}/ndk-build.cmd

저의 경우는 위와 같지만 따라하시는 분들은 ndk 폴더 아래에 ndk-build.cmd 부분까지의 경로를 적어주시면 됩니다.

 

메뉴 트리상의 C/C++ General 아래 Paths and Symbols를 선택합니다

 

보시면 Includes 탭에 GNU C++ 메뉴를 선택한 화면입니다.

 

Include할 라이브러리들의 경로가 적혀있는데 여기서 문제가 되는 것 입니다.

 

android-ndk가 버전 업을 하면서 현재 ndk의 경우

ndk/sources/cxx-stl/gnu-libstdc++/ 아래에 include가 있지 않고 버전 별 폴더가 추가되어 존재합니다 그렇기 때문에 디폴트로 잡혀 있던 경로를 수정합니다.

 

 

먼저 캡쳐의 확대한 캡쳐입니다.

 

제 경로에 맞게 수정된 결과입니다.

 

따라하시는 분들은 본인 경로에 맞게 수정하시면 됩니다.

 

4-2-2. Android.mk 파일에 기재된 경로를 수정합니다.

 

 

 

 

 

 

수전 전의 Android.mk 파일의 추가할 OpenCV.mk 파일의 경로 입니다.

우리는 프로젝트 내부에 OpenCV SDK를 압축해제 했으므로 해당 경로를 변경해야 합니다.

 

OpenCV.mk 파일의 절대경로로 변경하였습니다.

 

모든 에러가 없어졌고 이전에 설정한 ndk-build.cmd 때문에 자동으로 모듈까지 생성된것을 확인 할 수 있습니다.

 

 

 

결과 까지 뙇!!!!!

 

 

5. Android OpenCV 튜토리얼을 마치며...

 

참 별거 아닌 것 같은데 하루 삽질하고 몇일 뒤에 다시하니 쉽게 됐네요...

 

혹시 과정중에 생략된 부분이 있을 수 있는데 잘 안되시는 분은 덧글로 남겨 주시면 답변 드리겠습니다.

 

 

 

 

 

posted by -_-v RyuEK