AS通过Cmake JNI方式调用OpenCV C++接口和调用OpenCV Java接口混合开发基础

本文介绍了如何在Android Studio中通过Cmake和JNI调用OpenCV进行混合开发,包括环境配置、库的添加、CPU平台架构配置以及C++和Java接口的图片二值化操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JniOpencv环境配置

一、准备开发包

  1. 将OpenCV-android-sdk->sdk->native->libs->armeabi拷贝到项目main->jniLibs中
  2. 将OpenCV-android-sdk->sdk->native->libs->armeabi拷贝到项目libs目录中

这里使用2.,原因是方便搭建OpenCV Java开发环境(详情见下文)

二、修改jniLibs的目录

jniLibs的默认目录是../../../../src/main/jniLibs,使用方法2.后要在bulid.gradle中修改jniLibs的目录路径,使用方法1.这一步就不需要指定

android {
    ...
    sourceSets {
        main {
            //jni库的调用会到资源文件夹下libs里面找so文件
            jniLibs.srcDirs = ['libs']
        }
    }
}

三、准备库

将以下配置拷贝到CMakeLists.txt中,注意根据实际情况修改路径

# OpenCV-android-sdk路径,配置公共路径
set(pathToOpenCv /Volumes/D/material/opencv/opencv-3.2.0-android-sdk)

# 支持-std=gnu++11
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

# 配置加载native依赖(引入OpenCV头文件,类似于Java的jar包),配置头文件
include_directories(${pathToOpenCv}/sdk/native/jni/include)

# 动态方式加载,配置动态库
add_library( opencv_java3
             SHARED
             IMPORTED )
# 引入libopencv_java3.so文件,配置动态库
set_target_properties( opencv_java3
                       PROPERTIES IMPORTED_LOCATION
                       ../../../../libs/armeabi/libopencv_java3.so)

# 链接opencv_java3
target_link_libraries( # Specifies the target library.
                       native-lib opencv_java3

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

四、配置CPU平台架构类型

在android节点的defaultconfig下添加,注意根据实际情况选取:

externalNativeBuild {
    cmake {
        ...
        // 配置
//        abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
        abiFilters 'armeabi'
    }
}

五、如果是子项目配置OpenCV,在主项目的bulid.grale中要根据平台添加

defaultConfig {
    ...
    ndk {
//        abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值