Android Studio 使用CMake集成OpenCV

1.创建过程:  使用Android Studio创建工程,为了了解使用AS使用CMake集成OpenCV的必要步骤,在创建工程的时候就没有勾选Include C++ SuportOpenCV,在AndroidManifest文件中配置相机权限:

<uses-permission android:name="android.permission.CAMERA"/>

<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

2.切换到Project模式,在app目录下添加CMakeLists.txt文件,具体配置内容在后面具体解释。

3.在src的同级目录创建libs文件夹,拷贝OpenCV编译后的适配各种CPU架构的so文件(包括头文件)到到libs目录

4.创建javah扩展命令:选择file--Settings,在弹出的Settings界面选择Tools--External Tools,在右侧的点击+,在弹出的子界面配置javah命令参数,配置参数如下:

            Program:$JDKPath$/bin/javah.exe

            Parameters:-classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$

            Working directory:$ModuleFileDir$\src\main\java

创建完成后就会在右键菜单中添加External Tools---javah工具

5.创建jni目录:把OpenCV提供的demo中的java文件拷贝到Java下的命名空间内(和Activity同一目录),并选择拷贝的文件右键选择External Tools---javah,就会在jni目录下生成相应头文件,并拷贝demo中的cpp文件到jni文件夹下,修改对应的头文件为生成的命,并修改cpp中相应的方法名称和.h文件中的一致。添加完成后的工程目录结构如下图:

OpenCV,z

6.工程支持CMake:打开app下的build.gradle,在defaultConfig节点内部添加externalNativeBuild配置节,在buildTypes

后添加CMake编译,并配置依赖库的目录(第三步创建的目录),具体配置如下:
defaultConfig {
    applicationId "com.mm.www.ndkdemo"
    minSdkVersion 19
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    externalNativeBuild {
        cmake {
            cppFlags ""
        }
    }

    ndk{
        abiFilters 'arm64-v8a','armeabi-v7a'
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}

sourceSets{
    main{
        jniLibs.srcDirs = ["./libs"]
    }
}

7.配置CMakeLists:打开CMakeLists.txt文件,添加CMake版本:

cmake_minimum_required(VERSION 3.4.1)
# set()用来设置一个路径全局变量 distribution_DIR
set(distribution_DIR ${CMAKE_SOURCE_DIR}/libs)
add_library( # Sets the name of the library.
             native-lib

             SHARED

             src/main/jni/native-lib.cpp
             src/main/jni/DetectionBasedTracker_jni.cpp)

# 创建一个动态库 opencv_java3 直接引用opencv_java3.so
add_library(opencv_java3 SHARED IMPORTED )

set_target_properties(opencv_java3 PROPERTIES IMPORTED_LOCATION ${distribution_DIR}/${ANDROID_ABI}/libopencv_java3.so)

# Specifies a path to native header files.
include_directories(./libs/include/)

find_library(
              log-lib
              log )


target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       opencv_java3
                       ${log-lib})

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值