Setup OpenCV and Android Studio with NDK support
In this tutorial, I will demonstrate how to configurate the renowned computer vision libary, OpenCV, with the current Android Studio version (3.0.1). Let get started. The compiled version of OpenCV which supports Android is available at OpenCV Homepage. Download and extract it. Please note that to test the application properly on the mobile devices, the OpenCV Manager has to be installed.
In another tutorial, I will talk about how to compile our own OpenCV library and put it to Android Studio since the pre-compiled library misses some interesting and important components, e.g, the SIFT features and other licensed algorithms.
Creating a new Android project with NDK support
From the menu, select File->New->New Project
and select Include C++ support
in the Create New Project dialog.
The next two steps are similar to the setup for normal applications, so I skip it. Later, the IDE asks the C++ settings for the project, I prefer C++14 over C++11 and also add two options, namely Exception Support and Runtime Type Information Support, for the project.
From the Project Structure windows (
File -> Project Structure
), we add the OpenCV module by clicking on the plus sign, selecting theImport Eclipse ADT Project
and pointing to the/path/to/OpenCV4Android/sdk/java
directory.Select
Modules -> app
. In theDependencies
tab, add the OpenCV module by selecting the plus sign.Module Dependency
.- Select
:openCVLibrary340
.
Configurate CMAKE and NDK
In order to get CMAKE properly detect OpenCV, we add the following configuration to CMAKELists.txt:
- Add a new library:
include_directories(/path/to/OpenCV4Android/sdk/native/jni/include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION /path/to/OpenCV4Android/sdk/native/libs/${ANDROID_ABI}/libopencv_java3.so)
- Put
lib_opencv
to the arguments oftarget_link_libraries
(the last command inCMakeLists.txt
).
Beware that the path in CMAKE use /
in both Windows and Linux.
Configurate Gradle
Put
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
in thecmake
setting.Put the following text inside
android
:
sourceSets {
main {
jni.srcDirs = ['src/main/cpp']
jniLibs.srcDirs = ['\path\to\OpenCV-android-sdk\\sdk\\native\\libs']
}
}
Build the project again and we are done. In the the couple tutorials I will demonstate several techniques to manipulate the libary on Android:
- Transfer OpenCV MAT from Android to NDK code.
- Organize the project and source code. -