본문 바로가기
프로그래밍/OPENCV

[OPENCV] 안드로이드 OPENCV 사용법(ANDROID+OPENCV, NDK)

by 루티즈 2019. 12. 1.
반응형

[Android_Opencv]

1. 안드로이드 스튜디오 설치 및 세팅

1.1  안드로이드 스튜디오(android) 다운로드.

  - https://developer.android.com/studio/?gclid=Cj0KCQiAw4jvBRCJARIsAHYewPOlMWjRuaRHYpq442X9kNbuTmaVnQwGouPfyNUQj_tNqr84t7Hkhy0aAlkWEALw_wcB

 

Download Android Studio and SDK tools  |  Android Developers

developer.android.com

1.2  Configure -> SDK manager.

 

 

Configure -> SDK manager. -> SDK Platforms

-필요한 SDK 설치 . (최신 version )

 

1.3  SDK Tool 설치

-      Configure -> SDK manager. -> SDK Tools

-      필요한 tool 설치

-      OPENCV 세팅을 위한 필요 TOOL :: CMAKE , LLDB, NDK.

2. 안드로이드 프로젝트 생성.

2.1 새로운 프로젝트 생성.

 

 

Empty Activity 프로젝트를 생성해도 되지만, 비교적 간단하게 opencv 사용할 수 있도록 Native C++ (JNI Empty Activity) 프로젝트 생성.

 

2.2 프로젝트 Configure

이름, 패키지 이름, 저장 위치, 최소 API, language 알아서 선택

 

 

문제가 없을 시 CPP 폴더 내에 native-lib.cpp 파일이 있음을 확인할 수 있다.

 

3. OPENCV(ANDROID VERSION)설치

3.1 OPENCV DOWNLOAD

다운로드 주소 : https://github.com/opencv/opencv/releases

 

opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

opencv-4.1.1-android-sdk.zip 다운로드.

 

지정된 위치에 압축풀기 계속 쓸 라이브러리 이므로 적당히 좋은 위치(?)에 위치시켜 둔다.

 

3.2 OPENCV 라이브러리 Import

안드로이드 Studio 프로젝트에서 Opencv 라이브러리를 사용하기 위해서 import 가 필요.

File > New > Import Module

 

소스 경로는 opencv 경로를 넣어준다.

- Android 설치 폴더 > sdk

- Module name : “:opencv”

Oppcv 모듈 Dependencies 설정.

File > Project Structure >Dependencies

 

Modules 에서 app 선택 후 Dependencies 에서 plus 를 클릭하여 module Dependecy 추가.

 

만일 다음과 같은 에러가 뜬다면 프로젝트 최소 sdk 버전을 올려준다.

 

File > Project Structure > Modules

 

Min SDK Version 탭에서 최소 SDK 버전 변경.

5. 프로젝트 테스트_Hello Android_OPENCV

 

세팅한 Android 에서 Opencv 실제 TEST

 

5.1 Permsssion 설정.

5.1.1 AndroidManifest.xml에서 외부 파일 읽기를 허용.

추가 :

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

 

 

5.1.2 MainActivity.java 에서 사용할 함수 추가.

추가 :

public native void helloworldImage(long input, long output);

( Native-lib.cpp 에서 실제 실행되는 함수 추가.(MainActivity 에 사용할 함수를 추가한 후 전구 모양을 클릭하면 자동으로 함수를 생성할 수 있음)

 

5.1.3 Native-lib.cpp 함수 추가


extern "C"

JNIEXPORT void JNICALL

Java_com_example_eyetracker_MainActivity_helloworldImage(JNIEnv *env, jobject instance, jlong input,

                                                         jlong output) {

 

    // TODO

 

}


//TODO 부분에 실제 내용을 적어준다. ( 여기서부터는 OPENCV CPP 사용하는 것처럼 사용하면 된다.)

 

putText(outputMat, "HelloAndroidOpencv", Point(10,10), 2,2,Scalar(255,0,0));

(입력 받은 그림에서 “HelloAndroidopencv” 글자 삽입하여 출력.)

Mat *inMat      =  *(Mat *) input;

Mat *resultMat =  *(Mat *) output;

cvtColor(inMat, resultMat, COLOR_RGB2GRAY);

 

그리고 OPENCV 헤더를 추가

#include <opencv2/opencv.hpp>

 

 

5.1.4 cmake 수정


set(pathPROJECT C:/EXT/EyeTracker_mobile)

set(pathOPENCV ${pathPROJECT}/opencv)

set(pathLIBOPENCV_JAVA ${pathOPENCV}/native/libs/${ANDROID_ABI}/libopencv_java4.so)

 

> pathPROJECT : 현재 프로젝트 경로 설정.

> pathOPENCV : 프로젝트 내부 import OPENCV 모듈 경로.

> pathLIBOPENCV_JAVA: pathOPENCV native/lib 경로.

set(CMAKE_VERBOSE_MAKEFILE  on)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -STD=gnu++11")

 

target_link_libraries lib_opencv 추가.

target_link_libraries( # Specifies the target library.

        native-lib

       

        lib_opencv

        # Links the target library to the log library

        # included in the NDK.

        ${log-lib})


결과 :: 카메라 영상이 흑백 영상으로 보여짐.

 

반응형