OpenCV를 안드로이드에서 사용하려면 SDK를 이용해야 합니다. OpenCVC++로 되어있어서 설치하는 과정이 복잡했는데 요즘에는 쉽게 사용이 가능합니다. SDKOpenCV에서 제공하고 있는데 안드로이드 버전에 따라 맞는 버전을 선택 해야 하고 저는 최신 버전(현재 OpenCV-4.7.0)으로 테스트 해보려고 하였으나 계속되는 에러로 실패를 하고 다른 버전으로 몇 번을 시도한 후에 적합한 버전을 찾게 되었습니다.

 

안드로이드 버전을 많이 타는것 같습니다.  참고로 제 핸드폰의 Android version 9 입니다. 

OpenCV-4.4.0 버전이 제 핸드폰에는 적합하고 gradle 버전도 맞춰야 하고 dependencies 설정도 적절하게 손을 봐야 합니다.

 

 

아래에 설명되는 글들중 이미지에 버전이 4.7.0로 된 부분이 있다면 4.4.0임을 참고하시기 바랍니다.

처음 캡쳐하고 에러나서 여러번 테스트 하면서 다시 캡쳐를 하지 않았네요.

저는 OpenCV 5개의 버전을 테스트 해서 제가 가지고 있는 핸드폰에 적합한 환경을 설정 했습니다.  핸드폰 버전에 따라 조금씩은 환경 설정에 시간을 소비해야 하지 않을까 생각 됩니다.

 

 

1. SDK 다운로드

 

 

OpenCV SDK를 다운로드 받기 위해 홈페이지에 접속합니다.

 

https://opencv.org/

 

 

 

첫화면의 Library에 마우스를 올려 놓으면 서브메뉴가 나타나고 Releases를 선택합니다.

 

Library > Releases

 

최신 버전순으로 SDK 리스트와 지원하는 운영체제를 볼 수 있습니다.

자신의 핸드폰에 적합하다고 생각되는 버전을 선택합니다.

 

 

 

저는 OpenCV-4.4.0 버전에서 운영체제는 Android를 선택했습니다.

 

opencv-4.4.0-android-sdk.zip  211MB

 

다운로드 받은 파일을 적당한 폴더에서 압축을 풀어줍니다.

 

 

압축을 풀어 준 폴더에 들어가 보면 samples sdk 두개의 폴더가 보입니다.

샘플은 말 그대로 예제 이고 SDK 폴더를 사용합니다.

 

 

2. Android Project 생성

 

안드로이드 스튜디오에 SDK를 적용하여 개발 환경을 구축하기 위해 프로젝트를 하나 생성합니다.

 

 

Empty Activity를 선택하고 [Next] 버튼을 클릭 합니다.

 

 

프로젝트 명을 기입하고 기타 다른 선택도 자신의 환경에 맞게 해 줍니다.

저는 java로 개발하는것을 설명 드립니다.

 

 

3. SDK module 추가

 

이제 여기서 부터가 opencv SDK를 적용하는 부분입니다.

OpenCV를 모듈로 추가합니다.

 

 

메뉴에서 모듈을 import 하기위해

File > New > import Module

순서대로 선택을 하면 module 추가 팝업 창이 나타납니다.

 

 

여기에서 폴더모양 아이콘을 이용하여 다운받은 파일의 압축을 풀어 준 OpenCV sdk 폴더를 선택해줍니다.

 

 

[OK] 버튼을 클릭하면 앞으로 사용할 모듈에 대한 엘리어스 명칭을 입력합니다.

처음에는 폴더명대로 sdk로 되어있는데 이런 이름으로는 구분이 안되겠죠.

 

 

뭐라고 하든 상관은 없지만 혼동을 줄 명칭은 피해서 입력합니다. 대부분 OpenCV 또는 OpenCV4로 입력을 하리라 생각됩니다.

저는 OpenCV로 입력을

:OpenCV

이렇게 했습니다.

 

모듈이 추가되면 프로젝트에 OpenCV가 추가됩니다.

 

 

 

4. OpenCV gradle 수정

 

모듈이 추가되면서 OpenCV 설정gradle도 아래 이름으로 생성됩니다.

build.gradle(Module: OpencvTest.OpenCV)

 

 

 

java로 개발하기 때문에 코틀린 플러그인 오류가 발생 합니다.  sdk에 따라 안나오는 경우도 있습니다.

오류가 발생한 apply plugin: ‘kotlin-android’ 라인을 삭제합니다.

 

 

 

targetSdkVersion 26도 오류가 발생 하는데 29이상 지원이 된다고 하니 29로 변경 합니다.

. 저의 경우는 이렇게 해야 하는거고 개발환경이 다르신 분들은 32또는 33으로 하셔도 됩니다.

나중에 build할때 계속 변경하면서 찾으면 됩니다.

 

apply plugin: 'com.android.library'

def
openCVersionName = "4.4.0"
def
openCVersionCode = ((4 * 100 + 4) * 100 + 0) * 10 + 0

println "OpenCV: " +openCVersionName + " " + project.buildscript.sourceFile

android {
   
compileSdkVersion
29

   
defaultConfig {
       
minSdkVersion
21
       
targetSdkVersion 29

 

수정이 완료 되었습니다.

이제 app gradle 수정을 합니다.

 

build.gradle (Module: OpencvTest.app)

 

android {
   
compileSdkVersion
29
   
buildToolsVersion "29.0.0"

   
defaultConfig {
       
applicationId
"copycoding.tistory.opencvtest"
       
minSdkVersion 26
       
targetSdkVersion 29
       
versionCode 1
        
versionName "1.0"

 
dependencies {

   
implementation
'androidx.appcompat:appcompat:1.3.0'
   
implementation 'com.google.android.material:material:1.4.0'

 

여기도 버전과 dependencies 를 적당하게 수정해 줍니다.

아니면 나중에 build 할때 오류가 발생하면 수정합니다.

수정을 했으면 우측 상단의 [Try Again] 또는 [Sync Now]를 클릭해줍니다.

 

 

5. OpenCVapp에 적용

 

이제 추가된 OpenCV Module app에 적용하는 방법입니다.

 

 

 

안드로이드 스튜디오 상단메뉴에서

File > Project Structure

를 선택 합니다.

 

 

 

현재 제가 사용하고 있는 Android gradle plugin version  Gradle version입니다.

좌측 메뉴에서 Dependencies를 선택해줍니다.

 

 

좀 설명이 복잡할 수 있는데

Dependencies 다음 단계에 있는 Modules에서 맨 아래의 app을 선택합니다.

그리고 다음 단계 Declared Dependencies에서 + 기호를 선택 하면 나타나는 3번째 Module Dependency를 클릭 합니다.

 

Dependencies > app > [+] > Module Dependency

 

그러면 SDK module을 추가할때 이름지은 항목이 나타나는데 OpenCV 또는 OpenCV4등으로 기입한 이름입니다.

 

 

 

저는 OpenCV.로 설정을 하였는데 선택하고 [OK] 버튼을 클릭 합니다.

선택이 완료되면 다시 이전 화면으로 돌아갑니다.

 

 

여기에서 선택을 적용하기 위해 [Apply] 버튼을 먼저 클릭하고 잠시 반영작업이 완료된 후 [OK] 버튼을 클릭합니다. 적용이 완료되면 Apply 버튼이 비활성화 됩니다.

[Apply] > [OK]

 

이제 모든 설정이 완료 되었고 코딩만 진행하면 됩니다.

 

 

6. OpenCV SDK 적용 확인

 

OpenCV sdk가 추가되었는지 간단하게 테스트 해봅니다.

 

MainActivity에 다음과 같은 코드를 추가 합니다.

 

private static String Tag_Log = "OpenCV Test : ";

@Override
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView(R.layout.
activity_main);

   
if(OpenCVLoader.initDebug()) {
        Log.d(
Tag_Log, "OpenCV Initiallize");
    }
else {
        Log.d(
Tag_Log, "OpenCV Not Initiallize");
    }

}

 

OpenCV SDK가 로드 되는지 확인하는 간단한 코드 입니다.

다른 소스는 전혀 손대지 않아서 if 문만 추가하고 테스트 하면 됩니다.

 

 

Logcat에 설정한 문자가 잘 나오면 성공한것 입니다.

이제 지금까지 학습한 OpenCV관련 소스를 가지고 테스트를 진행하면 됩니다.

 

- copy coding -

 

git을 사용하면 commit이라는 용어가 SVN을 사용하던 사람들에게는 좀 혼동이 있을 수 있습니다.

commit이 서버 저장소에 저장을 하는게 아니기 때문인데요.

git는 로컬에서 add, commit을 사용하고 서버에는 push를 사용합니다.

git는 로컬에 staging area라는 중간 단계를 두고 있어서 여기에 저장하는걸 commit이라고 합니다.

내가 작업하고 있는 위치는 working directory (여기서 add, commit으로 staging에 등록)

내 컴퓨터의 git가 관리하는 위치는 staging area (여기서 pushrepository에 저장)

원격 servergithub가 관리하는 위치는 repository.


android github upload

 

이 글을 읽는다면 처음 사용하시는 분들일것 같아 잠시 설명좀 했습니다.

 

순서는 다음과 같습니다.

1. Git 환경 설정

2. Staging Area 작업

2.1 repository 생성

2.2 Add

2.3 GitHub Repository 생성

3. Commit and Push

 

 

1. Git 환경 설정

 

github에 프로젝트를 올리는 작업을 하려면 선행 조건이 있습니다.

로컬 컴퓨터에 git이 설치 되고 path가 설정되어 있어야 합니다.

github에 회원가입이 되어 있어야 합니다.

android studiogit가 설정되어 있어야 합니다.

 

설정되어 있지 않다면 미리 다음 페이지를 검토 하세요.

[GitHub] GitHub 회원 가입하기

 

[Git] Git 설치 하기 (Windows 용 - Git-2.20.1-64-bit)

 

[Git] Git 무설치 버전 windows 설치 하기

 

[안드로이드] Android studio에 github 환경 설정 하기

 


2. Staging Area 작업

 

2.1 repository 생성


로컬 gitrepository를 생성하는 작업을 진행 합니다.

 

프로젝트를 하나 생성하거나 기존 프로젝트를 오픈 합니다.

메뉴에서

VCS > Import into Version Control > Create Git Repository...

를 선택 합니다.



GItRepository를 생성할 프로젝트를 선택 합니다.



현재 작업중인 프로젝트를 선택 하고 [OK] 버튼을 클릭 합니다.

 

자세히 안보면 모르고 지나갈 수 있는데

프로젝트 선택 전 파일 모습입니다.

 


선택 후 파일 색이 변경 되었습니다.




Repository만 생성 했지 파일을 올리지 않아서 알려주는 것입니다.

 

2.2 Add


staging area에 목록을 올리는 작업입니다.

안드로이드 스튜디오 좌측 상단을 보면 기본값이 [Android]로 선택되어 있습니다.

이걸 클릭 해서 Project 를 선택 합니다.



그러면 현재 열려 있는 프로젝트명이 나오는데 여기에 마우스를 대고

마우스의 오른쪽 버튼을 눌러줍니다.



Project > Git > Add

이런 순서로 선택하면 붉은색 파일명이 녹색으로 변경 됩니다.



2.3 GitHub Repository 생성

 

이제 GitHub 서버에 연동해서 Repository를 생성 시켜보겠습니다.

 

상단 메뉴에서

VCS > import into Version Control > Share Project on Github

를 선택해 줍니다.



원격 GitHub 서버와 공유할 프로젝트를 설정하는 창입니다.



연동할 파일 목록과 간략한 내용을 입력해 줍니다.

SharedPrefGitHubRepository에 생성될 이름 입니다.



[OK]버튼을 클릭 합니다.

이제 연동이 되었습니다.


그러나 파일까지 업로드 된건 아닙니다. 프로젝트 명칭만 생성되것 입니다.

github 페이지에 들어가 보면 repository가 생성된걸 확인 할 수 있습니다.


최초에 android만 존재 했는데



새로운 Repository가 추가 되었습니다.



 

3. Commit and Push

 

stagingcommit 하고 github에 실제 파일을 push 해보겠습니다.

메뉴에서

VCS > Commit

을 선택 합니다.



또는 상단 툴바에서



이걸 클릭 해도 됩니다.

 

커밋할 파일들이 보입니다.



[Commit and Push] 버튼을 클릭 합니다.



왜 커밋하는지 이유를 써달라는 군요.

소스 변경 부분이 있을 경우 적어두면 나중에 디버깅 또는 원복이 쉽게 됩니다.



idemail을 기입하고 commit 합니다.




2개의 경고가 있다고 합니다.

대충 만든걸 아는군요.



경고쯤은 그냥 무시하고 [commit and push]를 누릅니다.



이제 실제 github에 올립니다.

[Push] 버튼을 클릭합니다.

 

github에 들어가서 확인을 해봅니다.



이제 파일들까지 잘 올라갔습니다.

- copy coding -


Android studio version 3.1.4를 다운 받아 새로 설치하고 android studio에서 프로젝트를 만들면 레이아웃 미리보기에서 hellow world가 안보이는 형상이 발생 했습니다.


그뿐만 아니라 다른 컴포넌트를 추가해도 역시 안보입니다.


androdi studio render problem


실행을 하면 AVD에서는 잘 보이는데…



 

에러가 있다고 표시가 있네요.


열어보니 Render problem인데 모르는 에러라고???

어떻게 하라고?

 

구글링을 하니

 

styles.xml에 들어가서 테마에 Base를 추가하면 된다고 하네요.


수정을 해보니 잘 되긴 하는데

 


매번 이렇게 하라고?

 

구글 지들은 알고 있겠지.” 하고 찾아보니


알고 있네! 알고 있어!



걍 업데이트가 답이라네요.


알려준데로 Help > Check for updates를 합니다.



창이 뜨면서 업데이트 하던가 말던가 두가지로 물어보지 뭘 저리 많이 물어보는지.




업데이트 하고 재시작 [Update and Restart] 버튼을 클릭 합니다.

 

한참을 진행합니다.



재시작 하면서 또 멀 물어보네요.



귀찮다. 그냥 [OK]

 

과연 결과는~~~~!



이것도 한참 돌아가네…… 내가 돈다돌아



쉽지 않군요.


이번에는 Gradle plugin update




또 한참을 기다립니다.



~! 잘 되는 군요.

 

버전은 같은데 build 버전이 최신입니다.



- copy coding -


1

+ Recent posts