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开发环境相关推荐
- android 界面切换监听,Android切换页面--setContentView
setContentView 一般切换页面,通过Intent,startActivity可以实现,但系统创建Activity是非常耗时的,如果对切换画面时间有要求,只能用setContentView在 ...
- 鸿蒙应用开发培训笔记02:应用开发入门
文章目录 零.本讲学习目标 一.应用开发概述 (一)鸿蒙应用开发定位 (二)应用开发学习路线 (三)应用开发实例 - 小鸿网课 二.搭建鸿蒙集成开发环境 - DevEco Studio 2.1 (一) ...
- 使用Android Studio搭建Android集成开发环境
一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...
- 基于Android Studio搭建Android应用开发环境
备注:电脑是windows xp系统 1. 安装JDK和环境变量设置 JDK是java development kit,Java JDK下载地址 http://www.oracle.com/t ...
- 使用Android Studio搭建Android集成开发环境(图文教程)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 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 ...
- 使用 Android Studio 搭建安卓开发环境
使用 Android Studio 搭建安卓开发环境,方便.快捷.因为 Android SDK 等下载已经集成到 Android Studio 的安装中 1.官网下载 Android Studio ...
- 【Android Studio】Android Studio 搭建开发环境(Linux Ubuntu篇)
Windows篇:[Android Studio]Android Studio 搭建开发环境(Windows篇)_dandelionela的博客-CSDN博客 Ubuntu篇参考: Ubuntu 18 ...
- 记一次Android全流程开发体验经历以及Android Studio使用【从环境搭建到项目打包发布 + 真实踩坑总结】
前言 临时安排接手一个 Android 应用项目开发,庆幸的是 Android APP 已经开发完成,我只需要在我的电脑上运行起来打包看一下效果即可,但是对于一个从未接触过安卓开发的我来说真的是费尽脑 ...
最新文章
- labview的用户身份认证系统设计_elasticsearch 集群身份认证与用户鉴权
- python 实现杨辉三角(依旧遗留问题)
- hdu 5157(manacher+前缀和+树状数组)
- 小猿圈python学习-函数的递归
- 求1+2+3+...(信息学奥赛一本通-T1158)
- mysql 创建表字段长度范围_老板要我把这份MySQL规范贴在工位上!
- 【BZOJ 1053】反素数【素数基本知识】
- linux acrobat,开源Linux Acrobat Javascript编辑器
- 项目管理工具——5W1H分析法
- Nginx下载及安装详细步骤
- 《opencv学习笔记》-- 感兴趣区域(ROI)、图像混合
- Java - springboot获取电脑mac地址
- 小趴趴--知乎精华回答的非专业大数据统计
- vue中使用video-player 播放rtmp格式的视频,播放前有一小段黑屏
- Android热更新
- [译]Unity3D Shader教程(五)Surface Shader Basics
- CUDA C/C++ 流和并发
- Tableau使用笔记
- 把房子卖了,把工资发了
- win10系统PhotoshopCC软件ps软件关闭开启时欢迎界面设置方法
热门文章
- 网络发现协议服务器,关于 DHCP 服务器和网络发现
- 从当前元素继续寻找_169. 多数元素
- qt将生成的程序打包在他人电脑上可用
- 学计算机高中选那三科,女生高中选哪三科最吃香
- java并发集合面试题,那些经常被问的JAVA面试题(1)—— 集合部分
- mycloud php5 mysql_mycloud 刷debian乐趣之-owncloud 私有云+芒果云的安装
- 当前完整路径_详解关键路径法,这可能是你找得到最详细的了
- 单链表实现约瑟夫环(JosephCircle)(C语言)
- linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...
- curd什么意思中文_查英英字典:What a shame是什么意思?