Cài đặt OpenCV trên Android Studio hỗ trợ lập trình NDK

2018/02/25

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.

Step 1

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.

  1. Từ cửa sổ Project Structure (File -> Project Structure), ta thêm OpenCV module bằng cách click vào dấu +, chọn Import Eclipse ADT Project và trỏ đến thư mục /path/to/OpenCV4Android/sdk/java.

  2. Chọn Modules -> app. Trong tab Dependencies , thêm OpenCV module bằng cách nhấn vào dấu +

    1. Module Dependency.
    2. Chọn :openCVLibrary340.

Add 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

  1. 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)
    
  2. Thêm lib_opencv vào tham số của target_link_libraries ( câu lệnh cuối cùng trong CMakeLists.txt).

Lưu ý rằng Cmake sử dụng / cho đường dẫn trong cả Windows và Linux.

Cấu hình Gradle

  1. Thêm abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64' vào cmake.

  2. Đặ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: