[안드로이드] OpenCV와 Android Studio
OpenCV를 안드로이드 환경에서 사용 할 수 있는 방법에 대해서 알아보려고 합니다.
안드로이드 스투디오 사이트에서 설치 해 줍니다.
※ 스투디오 버전: Android Studio 2020.3.1



최종로그
Preparing "Install Android SDK Platform-Tools (revision: 31.0.3)".
Downloading https://dl.google.com/android/repository/platform-tools_r31.0.3-windows.zip
"Install Android SDK Platform-Tools (revision: 31.0.3)" ready.
Installing Android SDK Platform-Tools in C:\DEV\SDK\Android\platform-tools
"Install Android SDK Platform-Tools (revision: 31.0.3)" complete.
"Install Android SDK Platform-Tools (revision: 31.0.3)" finished.
Preparing "Install Android Emulator (revision: 30.8.4)".
Downloading https://dl.google.com/android/repository/emulator-windows_x64-7600983.zip
"Install Android Emulator (revision: 30.8.4)" ready.
Installing Android Emulator in C:\DEV\SDK\Android\emulator
"Install Android Emulator (revision: 30.8.4)" complete.
"Install Android Emulator (revision: 30.8.4)" finished.
Preparing "Install SDK Patch Applier v4 (revision: 1)".
Downloading https://dl.google.com/android/repository/3534162-studio.sdk-patcher.zip
"Install SDK Patch Applier v4 (revision: 1)" ready.
Installing SDK Patch Applier v4 in C:\DEV\SDK\Android\patcher\v4
"Install SDK Patch Applier v4 (revision: 1)" complete.
"Install SDK Patch Applier v4 (revision: 1)" finished.
Preparing "Install Android SDK Tools (revision: 26.1.1)".
Downloading https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip
"Install Android SDK Tools (revision: 26.1.1)" ready.
Installing Android SDK Tools in C:\DEV\SDK\Android\tools
"Install Android SDK Tools (revision: 26.1.1)" complete.
"Install Android SDK Tools (revision: 26.1.1)" finished.
Preparing "Install Intel x86 Emulator Accelerator (HAXM installer) (revision: 7.6.5)".
Downloading https://dl.google.com/android/repository/extras/intel/haxm-windows_v7_6_5.zip
"Install Intel x86 Emulator Accelerator (HAXM installer) (revision: 7.6.5)" ready.
Installing Intel x86 Emulator Accelerator (HAXM installer) in C:\DEV\SDK\Android\extras\intel\Hardware_Accelerated_Execution_Manager
"Install Intel x86 Emulator Accelerator (HAXM installer) (revision: 7.6.5)" complete.
"Install Intel x86 Emulator Accelerator (HAXM installer) (revision: 7.6.5)" finished.
Preparing "Install Android SDK Build-Tools 31 (revision: 31.0.0)".
Downloading https://dl.google.com/android/repository/09489e417c0a266f2862ddd82b4ac29a1b7af55e.build-tools_r31-windows.zip
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" ready.
Installing Android SDK Build-Tools 31 in C:\DEV\SDK\Android\build-tools\31.0.0
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" complete.
"Install Android SDK Build-Tools 31 (revision: 31.0.0)" finished.
Preparing "Install Android SDK Platform 31 (revision: 1)".
Downloading https://dl.google.com/android/repository/platform-31_r01.zip
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in C:\DEV\SDK\Android\platforms\android-31
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.
Parsing C:\DEV\SDK\Android\build-tools\31.0.0\package.xml
Parsing C:\DEV\SDK\Android\emulator\package.xml
Parsing C:\DEV\SDK\Android\extras\intel\Hardware_Accelerated_Execution_Manager\package.xml
Parsing C:\DEV\SDK\Android\patcher\v4\package.xml
Parsing C:\DEV\SDK\Android\platform-tools\package.xml
Parsing C:\DEV\SDK\Android\platforms\android-31\package.xml
Parsing C:\DEV\SDK\Android\tools\package.xml
Android SDK is up to date.
Running Intel® HAXM installer
Intel HAXM installation failed!
For more details, please check the installation log:
C:\Users\User\AppData\Local\Temp\haxm_install-20210824_2149.log
Intel® HAXM installation failed. To install Intel® HAXM follow the instructions found at:
https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows
마지막 오류 메시지는 있었으나, 그냥 건너 뛰는 것으로...
▶NDK, CMake 설치
안드로이드 설정이 잘 안 돌아 가고 뻑뻑하다고 느껴질 때는? 캐시를 지워 봅시다. 안드로이드 스투디오를 ...
blog.naver.com
최종 설치 화면 확인

▶ OpenCV 4.5.3
Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.
github.com
위 사이트에서 설치 하여 줍니다.
2. OpenCV 샘플 설정
2.1 샘플 폴더 선택
'1. 설치 준비' 에서 준비 한 파일들을 설치 혹은 풀어 줍니다.
그런 다음 최최 설치 후 실행 하면 다음 그림 처럼 UI가 나타 납니다.

OpenCV SDK 설치 위치에서 샘플 프로젝트 samples 폴더를 선택 해 주고 나서,

해당 폴더 내에 local.properties 를 다음과 같이 변경 해 주었습니다. 디렉토리 위치는 자신이 가지고 있는 설치 툴의 위치로 알아서 변경 해 줍니다.
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Aug 24 17:12:39 KST 2021
#opencv.dir=D\:\\DEV\\SDK\\OpenCV-android-sdk\\sdk\\native\\jni
sdk.dir=C\:\\DEV\\SDK\\Android
ndk.dir=C\:\\DEV\\SDK\\Android\\ndk\\23.0.7599858
2.2 Android Gradle plugin version과 Gradle version 설정
다음 그림 처럼 설정 해 줍니다.

3 그 외 참고 사항
3.1 플러그 인 버전과 gradle 버전의 호환성
플러그 인 버전과 gradle 버전의 호환성을 확인 해 줍니다.
Android 스튜디오 빌드 시스템은 Gradle을 기반으로 하며 Android Gradle 플러그인에는 Android 앱을 빌드하는 데 사용하는 몇 가지 추가 기능이 있습니다.
developer.android.com
3.2 gradle 버전과 자바 버전 호환성
gradle 버전과 자바 버전의 호환성이 맞는 지 확인 해 줍니다.


사진 설명을 입력하세요.
3.3. 성공 메시지 확인
다음과 같은 안드로이드 스투디오에서 성공 메시지를 확인 합니다.
> Configure project :15-puzzle
Override build ABIs for the project 15-puzzle
Override lintOptions for the project 15-puzzle
Override doNotStrip-debug for the project 15-puzzle
> Configure project :camera-calibration
Override build ABIs for the project camera-calibration
Override lintOptions for the project camera-calibration
Override doNotStrip-debug for the project camera-calibration
> Configure project :color-blob-detection
Override build ABIs for the project color-blob-detection
Override lintOptions for the project color-blob-detection
Override doNotStrip-debug for the project color-blob-detection
> Configure project :face-detection
Override build ABIs for the project face-detection
Override lintOptions for the project face-detection
Override doNotStrip-debug for the project face-detection
> Configure project :image-manipulations
Override build ABIs for the project image-manipulations
Override lintOptions for the project image-manipulations
Override doNotStrip-debug for the project image-manipulations
> Configure project :opencv
OpenCV: 4.5.3 C:\DEV\SDK\OpenCV-android-sdk\sdk\build.gradle
Override build ABIs for the project opencv
Override lintOptions for the project opencv
Override doNotStrip-debug for the project opencv
> Configure project :tutorial-1-camerapreview
Override build ABIs for the project tutorial-1-camerapreview
Override lintOptions for the project tutorial-1-camerapreview
Override doNotStrip-debug for the project tutorial-1-camerapreview
> Configure project :tutorial-2-mixedprocessing
Override build ABIs for the project tutorial-2-mixedprocessing
Override lintOptions for the project tutorial-2-mixedprocessing
Override doNotStrip-debug for the project tutorial-2-mixedprocessing
> Configure project :tutorial-3-cameracontrol
Override build ABIs for the project tutorial-3-cameracontrol
Override lintOptions for the project tutorial-3-cameracontrol
Override doNotStrip-debug for the project tutorial-3-cameracontrol
BUILD SUCCESSFUL in 1s
4. 실행
USB 디버깅을 활성화 해 놓고 진행 하시면 될 것 같네요...

실행 화면




The SDK directory '/Users/cis/Documents/KotlinforNetwork/Chapter03/D:\Android\android-sdk' does not exist.
외부에서 만들어진 소스 코드를 open 으로 읽어왔는데 위와같은 에러가 나타났습니다.
Trouble-Shooting 2.
Trouble-Shooting 3. Camera-calibration 샘플 오류
CalibrationFrameRender.java 파일에 일단 다음 방어코드를 넣어 놓습니다.
@Override
public Mat render(CvCameraViewFrame inputFrame) {
Mat rgbaFrame = inputFrame.rgba();
Mat grayFrame = inputFrame.gray();
if(!grayFrame.empty()) return rgbaFrame; //<==
mCalibrator.processFrame(grayFrame, rgbaFrame);
return rgbaFrame;
}