Android studio配置OpenCV的JNI接口,实现C++代码编程

目录

一、下载OpenCV-android-sdk

二、新建项目

三、导入OpenCV包

 四、配置OpenCV的JNI接口,拷贝OpenCV所需的头文件和库文件

五、修改Cmake文件

 六、配置app的build.gradle文件

 七、测试


一、下载OpenCV-android-sdk

OpenCV官网地址:https://opencv.org/ 

点击Library-->Releases,下载Android版本,解压得到 OpenCV-android-sdk文件夹。​​​​​​

二、新建项目

打开Android studio, File-->New-->New Project,选择最后一项Native C++

 进入配置页面,命名为test,点击Next

 C++标准根据自身需求设置,这里我选择默认工具链,点击Finish

 项目建成后,在真机/模拟器上运行,试一下效果

三、导入OpenCV包

点击File-->New-->Import module,选择刚刚解压的OpenCV-android-sdk文件夹,找到sdk,

修改Module name为opencv,点击Finish

 点击完Finish之后,会报错,需要把红框中的代码注释掉,蓝框中的Sdk版本型号与app下的build.gradle(绿框)的Sdk版本型号一致。

 点击File-->Project Structure-->Dependencies-->app-->Module Dependency

 勾选opencv,点击OK

 四、配置OpenCV的JNI接口,拷贝OpenCV所需的头文件和库文件

1、把OpenCV-android-sdk下的OpenCV-android-sdk/sdk/native/jni/include文件夹拷贝到你项目

src/main/cpp下面。

2、把OpenCV-android-sdk下的OpenCV-android-sdk/sdk/native/libs文件夹拷贝到你项目src/main/

 下面,并修改名字为JniLibs。

五、修改Cmake文件

打开CMakeLists.txt文件,添加如下代码(推荐复制),修改的地方只有最上面和最下面两部分,中间部分为系统生成的内容,没有改动。

# 设置include文件夹的地址
include_directories(${CMAKE_SOURCE_DIR}/include)
add_library(libopencv_java4 SHARED IMPORTED)
set_target_properties(libopencv_java4 PROPERTIES IMPORTED_LOCATION
        E:/test/app/src/main/JniLibs/${ANDROID_ABI}/libopencv_java4.so)

把红框里的地址改成你的JniLibs地址(四.2创建的文件夹地址)

 在最下面的target_link_libraries添加libopencv_java4

 六、配置app的build.gradle文件

1、添加的第一部分

externalNativeBuild {
            cmake {
                cppFlags ''
                arguments "-DANDROID_STL=c++_shared"
            }
        }
        ndk {
            abiFilters 'x86', 'x86_64', 'armeabi-v7a',
                    'arm64-v8a'
        }

 

 2、添加的第二部分

注意:jniLibs.srcDirs = [‘libs’] 千万不要写为:jniLibs.srcDirs = [src/main/JniLibs’] 否则程序会报错

    sourceSets {
        main {

            jniLibs.srcDirs = ['libs']
        }
    }

    splits {
        abi {
            enable true
            reset()
            include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
            universalApk true //generate an additional APK that contains all the ABIs
        }
    }

 3、添加的第三部分

    project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]

    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.versionCodeOverride =
                    project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode
        }
    }

 七、测试

先构建,点击Make Project(小锤子),然后打开native-lib.cpp文件,先试着引入一下包,输入

#include <opencv2/opencv.hpp> 如果报红,点击下面1和2就不报红了

 包含OpenCV的头文件不报红就配置成功了,如下:

恭喜你,配置成功了,可以开始在Android平台下用C++来开发opencv代码了。 

猜你喜欢

转载自blog.csdn.net/weixin_51244415/article/details/131088634