Trong bài viết này, mình sẽ trình bày cách cấu hình thư viện OpenCV với IDE Android Studio phiên bản mới nhất (3.0.1). Phiên bản được biên dịch sẵn có hỗ trợ Android được cung cấp sẵn ở OpenCV Homepage. Tải và extract thư viện. Đồng thời, để có thể debug trên thiết bị thực thì điện thoại phải cài đặt ứng dụng OpenCV Manager.
Trong bài viết khác, mình sẽ hướng dẫn cách biên dịch phiên bản OpenCV với các tùy chỉnh của riêng cho từng yêu cầu, ví dụ như sử dụng đặc trưng SIFT hoặc các thuật toán có bản quyền.
Tạo ứng dụng Android với hỗ trợ NDK
Trong menu, File->New->New Project
, và chọn Include C++ support
trong cửa
sổ Create New Project
.
Hai bước tiếp theo tương tự như cấu hình ứng dụng thông thường, nên mình sẽ bỏ qua phần này. Sau đó, IDE sẽ hỏi cấu hình C++ cho ứng dụng, thoe mình thì nên chọn C++14 và 2 tùy chọn Exception Support và Runtime Type Information Support.
-
Từ cửa sổ Project Structure (
File -> Project Structure
), ta thêm OpenCV module bằng cách click vào dấu+
, chọnImport Eclipse ADT Project
và trỏ đến thư mục/path/to/OpenCV4Android/sdk/java
. -
Chọn
Modules -> app
. Trong tabDependencies
, thêm OpenCV module bằng cách nhấn vào dấu+
Module Dependency
.- Chọn
:openCVLibrary340
.
Cấu hình CMAKE và NDK
Để CMAKE có thể nhận ra được OpenCV, ta thêm đoạn code sau vào trong CMakeLists.txt
- Thêm thư viện:
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)
- Thêm
lib_opencv
vào tham số củatarget_link_libraries
( câu lệnh cuối cùng trongCMakeLists.txt
).
Lưu ý rằng Cmake sử dụng /
cho đường dẫn trong cả Windows và Linux.
Cấu hình Gradle
-
Thêm
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
vàocmake
. -
Đặt đoạn code sau vào bên trong phần
android
:
sourceSets {
main {
jni.srcDirs = ['src/main/cpp']
jniLibs.srcDirs = ['\path\to\OpenCV-android-sdk\\sdk\\native\\libs']
}
}
Build lại ứng dụng và coi như ta đã config xong. Trong các bài viết tới, mình sẽ giới thiệu một số kỹ thuật OpenCV với Android:
- Trao đổi đối tượng Mat giữa Java và NDK.
- Tổ chức dự án và mã nguồn.