최근 OpenCV 를 사용해볼 일이 있는데 여러 블로그를 참조해봐도 연동이 어려워서 직접 시행 착오를 겪은 내용을 기반으로 연동 방법을 공유하려고 합니다.
연동 순서는 다음과 같습니다.
OpenCV SDK 다운로드
다음 링크에 들어가서 Android를 다운로드 합니다.
다운로드 완료 후 압축을 풀어보면 다음과 같은 형태를 확인 하실 수 있습니다.
우리는 sdk 폴더만 사용할 예정입니다.
안드로이드 내 SDK 연동
기존 프로젝트가 있다면 그걸 사용해주시면 되시고, 없다면 기본 프로젝트 하나 생성해주시면 됩니다.
저는 기존 프로젝트가 없다는 가정으로 진행해보겠습니다.
별 다른 설정 없이 기본적인 프로젝트로 생성해보았습니다.
그 다음 Project Tab 을 Android 에서 Project 로 변경해줍니다. (필요에 따라서 Git Repository 는 연결해주시면 됩니다.)
그 다음 다운로드 받았던 OpenCV 폴더에서 sdk 디렉터리 전체를 그대로 복사하여 프로젝트 내에 붙여넣기 해줍니다.
저는 또 다른 sdk 가 연동 될 수도 있을거라는 생각에 sdkOpenCV 로 이름을 변경하였지만 sdk 로 두셔도 무방합니다.
그 다음 다시 Android 로 변경하고 settings.gradle.kts 를 열어줍니다.
그 다음 include(":모듈명") 를 입력하고 "Sync Now" 를 눌러줍니다.
저는 sdkOpenCV 로 이름을 만들었기에 include(":sdkOpenCV") 로 입력하였습니다.
저는 4.8.0 버전 기준에서는 sdk 안에 있는 build.gradle 안에 namespace 가 없는 모양입니다.
이 외에도 gradle 에서 설정이 누락되어 있는 것들이 좀 더 있습니다.
그래서 gradle 설정 후 다시 Sync 를 맞춰보려 합니다.
기타 버그 수정
project 로 다시 변경하고 sdk 안에 있는 build.gradle 을 열어주고 다음 내용들을 수정하였습니다.
(build.gradle 추가)
buildFeatures {
buildConfig = true
aidl = true
}
(모두 수정)
compileOptions 안에 JavaVersion.VERSION_1_8 -> JavaVersion.VERSION_17
(build.gradle.kts 수정)
kotlinOptions {
jvmTarget = "17"
}
수정한 내용을 요약하면 다음과 같습니다.
위 처럼 수정하고 다시 Sync 를 맞추면 정상적으로 연동되었음을 확인 할 수 있습니다.
테스트
연동이 잘 되었는지 확인해보겠습니다.
app 모듈의 build.gradle.kts 안에 의존성을 추가하고 Sync 를 맞춰줍니다.
전 연동이 되었는지만 확인해보려는 목적이기에 MainActivity 안에 있는 Compose 코드 내에 OpenCV 의 initDebug 라는 메소드를 가져와서 결과값을 노출시켜보려고 합니다.
import 를 시켜주고 실행해보면 다음과 같은 결과를 확인 하실 수 있습니다.
다음 편에서는 openCV 의 기능들을 직접 사용 해볼 예정입니다.
전체 코드는 다음과 같습니다.
감사합니다.