失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android搭建opencv开发环境 Android Studio搭建opencv开发环境

android搭建opencv开发环境 Android Studio搭建opencv开发环境

时间:2023-02-10 16:06:59

相关推荐

android搭建opencv开发环境 Android Studio搭建opencv开发环境

文章不配图片,阅读需要有Android开发基础并熟悉Android Studio。

一、搭建基于Java开发环境

以下内容介绍如何搭建基于Java jni的opencv开发环境。

1、准备工作

从opencv官网下载Android平台开发sdk并解压,假设解压后文件夹名为opencv-4.3.0-android-sdk。(此处以4.3.0为例)

2、创建项目

使用Android Studio(下简称AS)创建项目,假设项目名叫 cvdemo。

3、创建Module

创建新的Module作为opencv sdk,假设其名为opencv4。

之所以选择创建新Module而不是导入,只是因为opencv提供的目录结构像是ADT,gradle将会有大量配置目录的信息。

4、导入代码

将java代码和res资源放进Module的对应目录;

将存放本地动态文件*.so的 /opencv-4.3.0-android-sdk/sdk/native/libs/ 目录拷贝到opencv4的根目录下,即:/cvdemo/opencv4/libs/。

打开opencv4的build.gradle,在android内添加sourceSets,如下:

android {

...//其他配置信息

sourceSets {

main {

jniLibs.srcDirs = ['libs']//此目录即为上述添加的目录

}

}

...//其他配置信息

}

刷新项目,项目下会出现名为jniLibs的虚拟目录,并能查看到对应平台下的本地动态文件*.so。

此时已经可以依赖此Module实现Java开发。

二、搭建基于C/C++开发环境

虽然opencv提供面向Android的SDK,但是实际测试效果并不理想,特别在遍历Mat的时候,那效率简直感人。所以采用本地开发也是不错的选择。

继续配置以下内容实现本地开发,以下内容假设项目是在 app Module内做本地开发。

5.配置jni开发

打开项目的local.properties文件,AS默认没有配置ndk目录,确保ndk目录配置正确:

// 把sdk.dir和ndk.dir路径修改成你自己的目录

sdk.dir=/Applications/Android_SDK_Manager

ndk.dir=/Applications/Android_SDK_Manager/ndk/21.1.6352462

6.复制头文件

找到头文件*.h和*.hpp所在的目录/opencv-4.3.0-android-sdk/sdk/native/jni/include/,将其下的所有内容(在4.3.0版本,其下只有一个opencv2目录)拷贝到/opencv4/src/main/cpp/下。

因为头文件不是开发源代码,所以不需要添加到build.gradle里。

只要让CMakeLists.txt能导入即可。

7. 创建CMakeLists.txt

创建目录/cvdemo/app/src/main/cpp/,做为本地开发代码的目录。

假设本地项目只有my_native.cpp一个文件,并将编译成名为libmy_native.so的动态文件。

在cpp目录下创建文件CMakeLists.txt,内容如下:

#CMakeLists.txt

#定义变量,名为opencv,值为opencv sdk(opencv4 Module)目录,

#为了项目导入导出后不用修改,此处采用相对路径定位。

#CMAKE_SOURCE_DIR变量为CMakeLists.txt所在目录。

set(opencv ${CMAKE_SOURCE_DIR}/../../../../opencv4)

cmake_minimum_required(VERSION 3.4.1)

#配置加载native依赖

#引入opencv头文件所在目录

include_directories(${opencv}/src/main/cpp)

#引入opencv库

add_library(

opencv_java4

SHARED

IMPORTED)

#引入动态文件

set_target_properties(

opencv_java4

PROPERTIES IMPORTED_LOCATION

${opencv}/libs/${ANDROID_ABI}/libopencv_java4.so)

#以下为开发的本地库的配置,此处不做详解

add_library(

my_native

SHARED

my_native.cpp)

find_library(

log-lib

log)

target_link_libraries(

my_native

#此处也要添加

opencv_java4

${log-lib})

8. 修改build.gradle

接着修改本地源码所在的Module(此处假定的是app)的build.gradle,内容如下:

android {

...//其他配置信息

defaultConfig {

...//其他配置信息

externalNativeBuild {

cmake {

cppFlags "-frtti -fexceptions"

arguments "-DANDROID_STL=c++_shared"//导入C++标准库

}

}

ndk {//需要编译的平台

abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'

}

}

externalNativeBuild {

cmake {

path "src/main/cpp/CMakeLists.txt"//cmake所在位置

version "3.10.2"

}

}

...//其他配置

}

...//其他配置

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])

//最后别忘了引用opencv sdk Module

implementation project(path: ':opencv4')

...//其他引用内容

}

9、其他

my_native.cpp提供的jni接口函数,本文不做赘述,可以查看其他相关文档。

因为各种配置相关路径在build.gradle和CMakeList.txt里都可以修改,所以可以根据自己情况做修改。

如果觉得《android搭建opencv开发环境 Android Studio搭建opencv开发环境》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。