文章不配图片,阅读需要有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开发环境相关推荐

  1. android 界面切换监听,Android切换页面--setContentView

    setContentView 一般切换页面,通过Intent,startActivity可以实现,但系统创建Activity是非常耗时的,如果对切换画面时间有要求,只能用setContentView在 ...

  2. 鸿蒙应用开发培训笔记02:应用开发入门

    文章目录 零.本讲学习目标 一.应用开发概述 (一)鸿蒙应用开发定位 (二)应用开发学习路线 (三)应用开发实例 - 小鸿网课 二.搭建鸿蒙集成开发环境 - DevEco Studio 2.1 (一) ...

  3. 使用Android Studio搭建Android集成开发环境

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...

  4. 基于Android Studio搭建Android应用开发环境

    备注:电脑是windows xp系统 1.     安装JDK和环境变量设置 JDK是java development kit,Java JDK下载地址 http://www.oracle.com/t ...

  5. 使用Android Studio搭建Android集成开发环境(图文教程)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. Android(一)——Eclipse+ADT 和 Android Studio 开发环境搭建及介绍

    文章目录 1. 前言介绍 1.1 JDK安装与配置 1.2 IDE开发APP流程 1.3 相关术语的解析 1.4 ADB相关指令 1.5 APP程序打包与安装流程 2. 开发环境搭建 2.1 Ecli ...

  7. 使用 Android Studio 搭建安卓开发环境

    使用  Android Studio  搭建安卓开发环境,方便.快捷.因为 Android SDK 等下载已经集成到 Android Studio 的安装中 1.官网下载 Android Studio ...

  8. 【Android Studio】Android Studio 搭建开发环境(Linux Ubuntu篇)

    Windows篇:[Android Studio]Android Studio 搭建开发环境(Windows篇)_dandelionela的博客-CSDN博客 Ubuntu篇参考: Ubuntu 18 ...

  9. 记一次Android全流程开发体验经历以及Android Studio使用【从环境搭建到项目打包发布 + 真实踩坑总结】

    前言 临时安排接手一个 Android 应用项目开发,庆幸的是 Android APP 已经开发完成,我只需要在我的电脑上运行起来打包看一下效果即可,但是对于一个从未接触过安卓开发的我来说真的是费尽脑 ...

最新文章

  1. labview的用户身份认证系统设计_elasticsearch 集群身份认证与用户鉴权
  2. python 实现杨辉三角(依旧遗留问题)
  3. hdu 5157(manacher+前缀和+树状数组)
  4. 小猿圈python学习-函数的递归
  5. 求1+2+3+...(信息学奥赛一本通-T1158)
  6. mysql 创建表字段长度范围_老板要我把这份MySQL规范贴在工位上!
  7. 【BZOJ 1053】反素数【素数基本知识】
  8. linux acrobat,开源Linux Acrobat Javascript编辑器
  9. 项目管理工具——5W1H分析法
  10. Nginx下载及安装详细步骤
  11. 《opencv学习笔记》-- 感兴趣区域(ROI)、图像混合
  12. Java - springboot获取电脑mac地址
  13. 小趴趴--知乎精华回答的非专业大数据统计
  14. vue中使用video-player 播放rtmp格式的视频,播放前有一小段黑屏
  15. Android热更新
  16. [译]Unity3D Shader教程(五)Surface Shader Basics
  17. CUDA C/C++ 流和并发
  18. Tableau使用笔记
  19. 把房子卖了,把工资发了
  20. win10系统PhotoshopCC软件ps软件关闭开启时欢迎界面设置方法

热门文章

  1. 网络发现协议服务器,关于 DHCP 服务器和网络发现
  2. 从当前元素继续寻找_169. 多数元素
  3. qt将生成的程序打包在他人电脑上可用
  4. 学计算机高中选那三科,女生高中选哪三科最吃香
  5. java并发集合面试题,那些经常被问的JAVA面试题(1)—— 集合部分
  6. mycloud php5 mysql_mycloud 刷debian乐趣之-owncloud 私有云+芒果云的安装
  7. 当前完整路径_详解关键路径法,这可能是你找得到最详细的了
  8. 单链表实现约瑟夫环(JosephCircle)(C语言)
  9. linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...
  10. curd什么意思中文_查英英字典:What a shame是什么意思?