본문 바로가기

Android

Android with OpenCV using NDK - (2)

주의.

본 내용은 예전버전으로 설치내용이 다소 변경될 수 있습니다. 다른블로그 가는것을 권장합니다^^

 

 

 

 

버전마다 매우 상이한 내용이라 많은 어려움이 있음. 

각 블로그 및 카페에서 소개하는내용은 환경을 그대로 맞춰야 대부분 되는것 같음. 


최신버전으로 해봤는데... 구조가 너무 많이 바뀜...........


최근 Android SDK 가 20이 나왔고

Android-NDK 경우 r8 버전이. (r7버전과 사용에 있어서 문제가 없을듯하다.)

OpenCV 가 가장 크게 문제가 되는것 같다.


OpenCV경우 2.4.2 가 나왔고 

/sdk/

/samples/

/doc/

/apk/ 

으로 이루어졌다..........


sdk만 쓰면 될거 같은데 내부적으로 또다시 세분화 되었다........유유

경로 Path 지정하는것 조차 버거움.





 


먼저 OpenCV for Android 에서

구성하는

src폴더 : 응용프로그램의 Java코드를 포함

libs 폴더 : 성공적인 빌드 후 네이티브 라이브러리 포함

jni 폴더 : C/C++ 응용프로그램 소스 코드와 NDK 빌드 스크립트 Android.mk 및 Application.mk 


OpenCV측에서는

jni/Android.mk 파일에 대한 규칙을 사용하여 별도의 작성을 중요시한다.


 






성공한 버전에 대해 다른 PC에서 재시도해봄.

현재는 샘플 프로젝트를 돌리는데까지 만....


 환경
 - Android-NDK r8

 - OpenCV 2.3.1



먼저 확인이 안된 사항이지만, 이 코드가 정확히 어디에 쓰이는지는..모른다...

bashrc 파일을 수정하여 추가한다.

 export OPENCV_ROOT=/home/Administrator/OpenCV-2.3.1
 export OPENCV_INCLUDES=/home/Administrator/OpenCV-2.3.1/include

당연히 자신의 경로에 맞춰야겟다. cygwin폴더/home/계정명/Opencv폴더~블라블라



Samples 프로젝트 내에 /jni/android.mk 파일을 vs나 editPlus나 vi편집기로 수정.

빨간색 내용이 중요.


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on

include ../includeOpenCV.mk
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")
#try to load OpenCV.mk from default install location
include /home/Admin/OpenCV-2.3.1/share/OpenCV/OpenCV.mk
else
include $(OPENCV_MK_PATH)
endif

LOCAL_MODULE := native_sample
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS += -llog -ldl

LOCAL_C_INCLUDES += $(OPENCV_INCLUDES) $(ANDROID_OPENCV_INCLUDES)
include $(BUILD_SHARED_LIBRARY)


 include /home/Admin/OpenCV-2.3.1/share/OpenCV/OpenCV.mk

경우 자기것에 맞게 Opencv의 경로를 따라가 OpenCV.mk 파일의 경로를 지정한다.

LOCAL_MODULE : 생성될 so파일명

LOCAL_SRC_FILES : 소스파일이 될것. native코드.

include $(BUILD_SHARED_LIBRARY) : 공유라이브러리를 생성

LOCAL_C_INCLUDES 경우 아직 정확한 근거를 못찾음.




수정한 해당 프로젝트를 자바이클립스에서 import하여 가져온다. 

문제 없이 실행될것이다.


import opencv 관련 에러가 발생한다면 Path 지정문제일드 싶다. Android.mk 나 includeOpenCV.mk 의

Path를 확인하여 includeOpenCV.mk 파일의 위치또한 확인해볼것.