OpenCV 2.4.2 for Android (with NDK) Setting


<OpenCV 2.42 for Android (with NDK) Setting>


최초 작성일 : 2012.09. 27

최종 수정일 : 2012.11. 21


안드로이드 버전이 현재 '아이스크림' 으로 업데이트 되면서 NDK 및 openCV 도 버전업데이트가 되었습니다.

약 1년전에 Setting 하는 과정을 포스팅 하였습니다.


저도 처음 하면서 포스팅한 거라.  불필요한 작업이 많이 있었으나. 1년 넘게 계속 사용하면서 지금와서 새로운 버전을 사용해보니 Setting 하는 과정이 많이 줄어있었습니다. 

그래서 최신버전으로 다시 정리를 해볼까 합니다. 


by 퓨림노



2012.11.21 Update 내용

. OpenCV for Android SDK Document 링크

http://docs.opencv.org/2.4.3/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#o4a-sdk

http://docs.opencv.org/2.4.3/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#dev-with-ocv-on-android


위의 경로에가면~안드로이드 설정방법이 있다. 

뭐 내블로그를 참조해도 되겠지만 원본을 보고 따라하는게 역시 이득이다. 

왜 셋팅이 끝이나고나서 이런걸 보게되는건지 모르겠다. 

블로그 포스팅 내용을 보기전에 위에 링크를 먼저 따라가길 바랍니다. 

by 퓨림노



01. 전체적인 설치 안내 

- a. Eclipse Settting for Android

- b. Android NDK Setting

- c. OpenCV 2.4.2 Setting

- 4. etc



02. Eclipse Setting for Android

 - 기타 다른 블로그 or 도서 or 제 블로그의 다른 포스터에 게시되어 있기 때문에 글을 작성하지 않고 링크로 남겨드립니다.

 - Eclipse Juno 버전입니다. (NDK 를 위해서 보시는 분들이라 생각하고 자세한 Setting 은 생략 합니다)

  URL1 : http://vbflash.net/98 

  URL2 : http://vbflash.net/97    두개의 링크 확인 후 설치 해주시기 바랍니다.


03.  Android NDK Setting

 - Android NDK Settinghttp://vbflash.net/4

 - Android NDK Example http://vbflash.net/5

 - Android OpenCV Settinghttp://vbflash.net/8

 

 상위 URL은 각각 1년전에 Setting 하였던 방법입니다. 지금과 크게 다르지 않으니 쎗팅하는 과정을 참조 해주시기 바랍니다.



Windows 경우 ( Mac 의 경우는...나중에 posting Upload 하겠습니다)


 a. Cygwin 설치


 b. NDK Setting

    - 현재 Android-ndk-r8b 버전(2012.09.27, http://developer.android.com/tools/sdk/ndk/index.html 에서 확인)


 c. Cygwin 설치 이후

 C:\cygwin\home\vbflash\android-ndk-r8b   

    - 위의 경로에 NDK 를 압축해제 하도록 한다. 


 d. .bashrc 파일 수정

    - 제일 마지막 줄에 추가를 하도록 한다. 

# insert Android NDK ROOT

export ANDROID_NDK_ROOT=/home/vbflash/android-ndk-r8b


 e. 시스템 환경 변수 등록

    - User(계정)에 대한 사용자 변수에 PATH  를 등록 하고 삽입하여도 된다. 

    - C:\cygwin\bin;                                                  // cygwin 경로를 추가

    - C:\cygwin\home\vbflash\android-ndk-r8b;        // Android-ndk-r8b 의 경로를 추가

C:\cygwin\bin;C:\cygwin\home\vbflash\android-ndk-r8b;


 f. cygwin ndk-build -B 명령어 확인



    - 위의 그림과 같이 sample/hello-jni 에 들어가서 ndk-build -B 명령을 수행하자. 제대로 so 파일이 생성되었다면 OK!


04. OpenCV 2.4.2 Setting


a. OpenCV 공식 홈페이지http://opencv.org/opencv-v2-4-2-released.html

    - opencv 2.4.2 released 버전을 다운 받도록 하자. 여기에 opencv for android 도 들어 있으니, PC와 cygwin 을 같이 설치하도록 하자. 

    - openCV Downloadhttp://opencv.org/downloads.html  

      = 여기에서는 Linux/Mac/android 그리고 Wnidows 에 따라서 OpenCV 버전이 있으니 필요한것을 적절히 받자. 


b. opencv Setting

   - 아래의 경로로 압축을 풀도록 하자.

C:\cygwin\home\vbflash\OpenCV-2.4.2-android-sdk


   - 뒤에 경로에 하이픈(-) 그리고 숫자 가 들어가서 경로를 아래와 같이 바꾸어서 하였습니다. 에러가 난다면 경로를 줄이는것도 한가지 방법!

C:\cygwin\home\vbflash\opencv

     


05. import OpenCV Project( in Eclipse)

   - 셋팅할 것은 없다. Project를 삽입하도록 하자. 


a. [import]-[Existing Projects into Workspace] 에서  앞에서 압축해제 해준 opencv 경로를 선택한다. 

b.  경로 : C:\cygwin\home\vbflash\opencv


c. (아래와같지는 않고..) 모든 프로젝트를 선택해서 추가하도록 한다. 

  - 현재 아래그림은 이미 import 된 상태이기 때문에 그렇다. 다르게 나옴. (뭐 이미 아시죠?)



d. 여러가지 프로젝트가 import 되는데 여기서 OpenCV Library 2.4.2 의 Properties를 확인하도록 하자. 

 - 확인하여야 할 사항 

    01. Is Library 가 체크가 되어 있는지 확인한다. 

    02. Android-11 API 버전 이후부터 2.4.2 가 사용이 가능하다. ( 어디 설명보니 ICS4.0 이상이라고 적혀있엇 던 것 같다. ) 가물가물. 

    03. 아무튼 현재 설치된게 없어서 Android 4.0.3 버전으로 체크를 해주도록 한다. 꼭! (선택이 안되어있기 때문에 API Level 를 선택)




e. Android NDK + OpenCV 를 사용하는 프로젝트를 확인하자.

 - 아래의 Project 두개를 일단 확인 하도록 하자. 

  01. OpenCV Tutorial 3 - Add Native OpenCV

  02. OpenCV Tutorial 4 - Max Java +Native OpenCV 

 - 여기서는 Library로 만들어 둔 프로젝트가 추가되어 있는지 확인한다.

 - Android 4.0.3을 을 체크하도록한다.(API Level 11 이상 선택)



f. Error 발생!

 - 역시 한번에 되는 것이 없다고...에러가 발생함. 에러는 크게 두가지가 발생한다.



먼저 위와 같은 Error 가 발생한다.

01.  "Symbol 'std' could not be resolved" 라는 에러

해결방법 

- 근본적인 해결방법은 아니겠으나. 이렇게 나마 해결을 하도록 한다. 

- 그냥 간단히 주석처리! 



02. Call Requires API level 11(current min is 8) : Android.graphics.SurfaceTexture#<init> Error


SampleViewBase.java 파일에서 에러가 발생한다. Android API 최소레벨이 11이어야한단다. 


해결방법 2가지 

 01. 주석처리

 02. AndroidManifest.xml 에서 android:minSdkVersion="11" 로 수정 해준다.



그러면 문제 없이 Build 가 되고 실행이 가능합니다.


[인증샷] - Setting 하는데 2일 걸렸습니다. 이 포스팅을 보신 분들은 이제 1시간이면 충분하죠? 






05. etc

  여기에서 다룰 점은 (위에 글 작성하면서...중간에 연결이 끈키더니 날아겠네요~ ㅜ_ㅜ 5~6개 정도 잇었는데 생각 나느데로 작성하겠습니다. )

Setting 을 하면서 몇가지 의문점이 들었습니다. 의문점은 아래와 같습니다. 


Q1. sh build.sh 은 안쓰는가?

Q2. android opencv 는 이제 더이상 build 를 하지 않는가?

Q3. Android SVN은? 안쓰는가? 

Q4. Android-ndk-crystax 버전은??? 

Q5. 좀더 깊게 공부할 수 있는 방법은?


음...일단 셋팅이 끝나고 소스코드를 마음대로 편집을 하지는 못하였는데....뭐...그렇네에....

일단 조금 더 손을 만지작 해봐야 알것 같네요. 


01. sh build.sh 명령어

 - 음....명령어를 혹시나 해서 쳐봤는데 실패! 왜일까? 라는 생각을 하면서 android.mk , application.mk 파일에 설정에 따라 script 문제니깐 나중에 필요하면 찾아보고 해야 할 것 같다. 물론 기존의 ndk-build -B 명령어로 프로젝트가 빌드가 되었기 때문에 ....안쓸려고 한다. 


참, 적다보니 생각났는데, Eclipse JUNO 버전으로 오면서 Android NDK 에 대한 code asist 가 좋아진 것 같다. 시꺼먼 Native C 코드를 보면서 디버깅을 하였었는데....

참으로 1% 라도 보기 더 좋아진 것 같다.

 또한, Eclipse 에서 프로젝트 Clean 을 하게 되면, NDK 와 관련된 프로젝트는 so 파일을 만들기위해서 자동으로 build 를 하였다. 


증거샷 

http://vbflash.net/793


뭐 편해졌으니 다행이다. 근데 이거 계속 이러면 안좋은 점이 없나?? 모르겠네. 먼가 빠진 느낌이 드는데..무튼...

cgywin 을 함께 사용하도록 하자. ( 물론 난 mac에서 개발할테다. )


02. 1년전에 처음 opencv for android library 를 사용 할때에는 build 를 1시간동안이나 하였는데....

     지금은 뭐 많이 바꼈을테니, prebuild 버전인가보다 하고 생각중이다. 아직 다 찾아보지 않았으니 ..제말에 오해말길 바랍니다.


03. Android SVN? 이전에 쓴 포스팅 블로그를 보고 사람들이....SVN 파일을 달라고 한다. 

.....뭐 얼마전까지 온거보면....사람들이 이제 많이하는것 같은데...머랄까......

1년 지났는데 안드로이드 버전도 아이스크림(ICS 4.0)이고...최신버전을 사용하시는게 좋지 않을까요??? 

항상 구버전은 ...안좋은 것 투성이니...


04. android-ndk-crystax 버전? 

 - 현재 opencv 를 사용하기위해서 original 버전을 사용합니다만....


이전에는 crystax 버전을 사용할 경우는 original 버전에 문제가 생겨서 몇몇 개발자들이 코드를 수정한 버전이라고 들었다. 

하지만 여기서도 Error 가 발생하게 되니...아니면 build 가 되지 않던가...


아니면 현재 NDK 버전과 opencv 버전의 궁합을 맞추던가. 아니면 Path를 일일이 더 다시 확인을 한다던가. 

일단 되니깐...넘어가자. 문제가 생기면 또다시 포스팅을 하도록 하자.


05. 좀더 깊게 공부할 수 있는 방법?

- 안드로이드 시작한지 1년 / 그리고 기존 SDK 는 깜깜하다. openCV 와 증강현실을 위해서만 달리다보니,,,뭐 안에 내부구조를 정확히 모른다.

그리고 "Android NDK Programming" 책..(http://vbflash.net/103) 표지는 여기서 확인 가능하다.

지금 나온책이 내가 정리 한 것 보다 많이 되어있었고, 깔끔하다.


  물론 난 포스터니깐. ? 그래도 나도 책 내고 싶다 ㅜ_ㅜ!! 


무튼 제목에 맞게 다시, 

  공부를 조금 더 깊게 하려면, 이것 저것 같이 공부를 해야 한다.

 현재 iOS 를 시작하였다. Object-C ...문법이 굉장히 쉽다. 편하다. 그러나 익숙하지가 않다 ㅜ_ㅜ...

맥을 만지는 일이 극히 드므니,,,(맥을 가지고 있으면서도..)


그리고 기타 다른 모바일 기기 이외에 현재 Computer Vision + Math + openGL / 그리고 몇몇은 비밀~

같이 ...융합하여서 공부공부! 오로지...


죄송합니다. 그냥 주절주절 ...!


열공하세요!

'Library > opencv' 카테고리의 다른 글

[CUDA] CUDA4.2.9 Setting with Visual studio 2010  (0) 2012.10.16
opencv2.4.2, visual studio 2010 setting  (0) 2012.10.09
openCV 2.2 Setting on Visual Studio 2008 ( with 2.3.1)  (0) 2011.11.06
cvSVD(), OpenCV  (0) 2011.04.19
visual 2010 opencv2.2  (0) 2011.03.24

댓글

Designed by JB FACTORY