- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android使用OpenCV的三种方式(AndroidStudio)
其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份,当时还是个菜逼(虽然现在也是个菜逼),在那一段时间,学了一段时间的android(并不算学,一个月都不到),之后再也没接触android,而是一直在接触java web。那次接触OpenCV是因为一个学长的毕业设计,这次接触OpenCV是因为自己的毕业设计。2013年那年技术太菜,ndk环境都搭不好,当初还是eclipse环境,一直按照网上的教程去搭,下什么cygwin,简直就是个坑,网上的文章转来转去,都是过时的。后来一个机会看到了google官方的一个文档,就像发现了新大陆一样,发现ndk环境根本不需要装cygwin,装了你就坑了,装这个东西有好多G呢,时间浪费不说,简直误人子弟啊。后来在那年7月写下一篇博客
NDK开发环境
这段时间在填自己毕业设计的坑,要用到OpenCV,首先得下载到sdk吧,这个从官网上下载就好了?OpenCV for Android
注意下载的是OpenCV for android。当前版本是3.0
解压后,里面的内容如下
samples目录下是样例代码,sdk目录下是我们需要用到的java层和jni层的代码。apk目录是manager的apk安装包
其实OpenCV最简单的使用方式是使用manager,也就是使用apk目录下的安装包,安装对应的apk,将java层代码导入,使用OpenCVLoader.initAsync()加载库,之后你就可以直接用java代码调用Opencv相关的功能了。
但是这种方式除了安装我们自己的apk还需要安装上面提到的manager的apk,用户体验十分不好,不推荐使用,本文的三种方式将完全脱离这个manager的apk。
本文下面的三种方式的内容参考自文章?OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)
本篇文章使用android studio作为开发环境,由于实验性的构建工具对ndk支持还不好,所以使用旧的构建方式,在原来写的一篇博客基础上修改即可android studio下ndk开发
这正式介绍三种方式之前,我们需要做一些前期准备。
首先新建一个项目,将OpenCV中sdk目录下的native目录拷到项目根目录
然后新建Jni目录
在里面新建两个文件
编辑gradle.properties文件,增加下面的属性使用旧版的ndk功能(不添加会使用实验性的ndk构建工具)
android.useDeprecatedNdk=true
在local.properties文件中配置ndk目录
ndk.dir=D\:\\AndroidSDK\\sdk\\ndk-bundle
编辑build.gradle,在android节点中增加下面的代码
sourceSets.main.jni.srcDirs = []
//禁止自带的ndk功能
sourceSets.main.jniLibs.srcDirs = [src/main/libs,src/main/jniLibs]
//重定向so目录为src/main/libs和src/main/jniLibs,原来为src/main/jniLibs
task ndkBuild(type: Exec, description: Compile JNI source with NDK) {
Properties properties = new Properties()
properties.load(project.rootProject.file(local.properties).newDataInputStream())
def ndkDir = properties.getProperty(ndk.dir)
if (org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)) {
commandLine $ndkDir/ndk-build.cmd, -C, file(src/main/jni).absolutePath
} else {
commandLine $ndkDir/ndk-build, -C, file(src/main/jni).absolutePath
}
}
tasks.with
您可能关注的文档
最近下载
- 对照《中国共产党纪律处分条例》排查梳理违纪风险点(共30条,包含产生因素和防范举措).docx VIP
- 初中物理教师招聘选调考试精彩试题.docx
- 房屋租赁合同70582.doc
- 初中物理探究式教学研究结题报告草稿.doc
- 培训机构辅导班兼职教师聘用合同协议.doc
- 2022-2023学年北京市西城区高二下学期期末考试语文试题(解析版).docx
- 舞剧的僭越——作为符号的舞蹈诗剧《只此青绿》.pdf VIP
- DB53/T 2007-2015- 钢筋保护层混凝土垫块质量检测技术规程.pdf
- 初中物理教师招聘选调考试试题(2).doc VIP
- 学前儿童社会教育(学前儿童社会教育活动指导)-国家开放大学电大期末纸考卷考题目答案.pdf
文档评论(0)