欢迎来到天天文库
浏览记录
ID:37912902
大小:485.00 KB
页数:14页
时间:2019-06-02
《Android 使用OpenCV的三种方式(Android Studio)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份,当时还是个菜逼(虽然现在也是个菜逼),在那一段时间,学了一段时间的android(并不算学,一个月都不到),之后再也没接触android,而是一直在接触javaweb。那次接触OpenCV是因为一个学长的毕业设计,这次接触OpenCV是因为自己的毕业设计。2013年那年技术太菜,ndk环境都搭不好,当初还是eclipse环境,一直按照网上的教程去搭,下什么cygwin,简直就是个坑,网上的文章转来转去,都是过时的。后来一个机会看到了google官
2、方的一个文档,就像发现了新大陆一样,发现ndk环境根本不需要装cygwin,装了你就坑了,装这个东西有好多G呢,时间浪费不说,简直误人子弟啊。后来在那年7月写下一篇博客NDK开发环境这段时间在填自己毕业设计的坑,要用到OpenCV,首先得下载到sdk吧,这个从官网上下载就好了 OpenCVforAndroid注意下载的是OpenCVforandroid。当前版本是3.0解压后,里面的内容如下samples目录下是样例代码,sdk目录下是我们需要用到的java层和jni层的代码。apk目录是manager的apk安装包其实
3、OpenCV最简单的使用方式是使用manager,也就是使用apk目录下的安装包,安装对应的apk,将java层代码导入,使用OpenCVLoader.initAsync()加载库,之后你就可以直接用java代码调用Opencv相关的功能了。但是这种方式除了安装我们自己的apk还需要安装上面提到的manager的apk,用户体验十分不好,不推荐使用,本文的三种方式将完全脱离这个manager的apk。本文下面的三种方式的内容参考自文章 OpenCV4Android释疑:透析Android以JNI调OpenCV的三种方式(
4、让OpenCVManager永不困扰)本篇文章使用androidstudio作为开发环境,由于实验性的构建工具对ndk支持还不好,所以使用旧的构建方式,在原来写的一篇博客基础上修改即可androidstudio下ndk开发这正式介绍三种方式之前,我们需要做一些前期准备。首先新建一个项目,将OpenCV中sdk目录下的native目录拷到项目根目录然后新建Jni目录在里面新建两个文件编辑gradle.properties文件,增加下面的属性使用旧版的ndk功能(不添加会使用实验性的ndk构建工具)android.useDe
5、precatedNdk=true在local.properties文件中配置ndk目录ndk.dir=D:\AndroidSDK\sdkdk-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/j
6、niLibs,原来为src/main/jniLibs taskndkBuild(type:Exec,description:'CompileJNIsourcewithNDK'){ Propertiesproperties=newProperties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) defndkDir=properties.getProperty('ndk.dir') if(org.
7、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 } }
8、 tasks.withType(JavaCompile){ compileTask->compileTask.dependsOnndkBuild } taskndkClean(type:Exec,description:'CleanNDKBinaries'){ Propertiesproperties=newPr
此文档下载收益归作者所有