OpenCV for Android Studio 学习笔记(一):NDK及OpenCV的安装配置
2016-01-07 15:36
701 查看
最近项目中有使用OpenCV的要求,这对于还没有接触过NDK的我来说真是有点儿难度。
所以先从NDK的配置入手,然后又配置OpenCV,并尝试使用OpenCV来运行一些小例子。
终于步入正轨了,特来做个小总结。
只需:
File ——> Project Structure——>SDK Location 最下方的选项就是NDK。只有在这里下载会自动配置各种内容。(注意,此过程有连接外网的需求,应该是在下载的最后部分)
此后,按照
http://wiki.jikexueyuan.com/project/android-actual-combat-skills/ndk-development-in-android-studio.html
介绍的关于 头文件 、 Native代码 、.so文件的内容都能完成。
注意,Android Studio 默认是没有.mk文件的。(关于.mk文件的内容还了解的不多,以后补充)如果有需求要使用自己的.mk文件,就要在自己动手修改buile.gradle文件,更改jnilibs目录。
在android {
}
内部增加一下代码:
OpenCV的使用方式有很多种,随着版本的更新还出现了一种使用Manager进行中间衔接的方式,但这种方式要额外安装apk(用户打开需要OpenCV的功能时,会自动获得提醒去Google Play Store下载),不是很方便,特别是国内环境。
我一般是这样初始化OpenCV
具体的关于OpenCV的使用可以参考:
http://blog.csdn.net/sbsujjbcy/article/details/49520791
所以先从NDK的配置入手,然后又配置OpenCV,并尝试使用OpenCV来运行一些小例子。
终于步入正轨了,特来做个小总结。
一、NDK
其实,Android Studio中NDK的配置是很简单的。不需要像Eclipse中那样复杂,不必使用cygwin这一类工具来模拟Linux环境。只需:
File ——> Project Structure——>SDK Location 最下方的选项就是NDK。只有在这里下载会自动配置各种内容。(注意,此过程有连接外网的需求,应该是在下载的最后部分)
此后,按照
http://wiki.jikexueyuan.com/project/android-actual-combat-skills/ndk-development-in-android-studio.html
介绍的关于 头文件 、 Native代码 、.so文件的内容都能完成。
注意,Android Studio 默认是没有.mk文件的。(关于.mk文件的内容还了解的不多,以后补充)如果有需求要使用自己的.mk文件,就要在自己动手修改buile.gradle文件,更改jnilibs目录。
在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.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } task ndkClean(type: Exec, description: 'Clean NDK Binaries') { 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",'clean', '-C', file('src/main/jni').absolutePath } else { commandLine "$ndkDir/ndk-build",'clean', '-C', file('src/main/jni').absolutePath } } clean.dependsOn 'ndkClean'
二、OpenCV
OpenCV的使用方式有很多种,随着版本的更新还出现了一种使用Manager进行中间衔接的方式,但这种方式要额外安装apk(用户打开需要OpenCV的功能时,会自动获得提醒去Google Play Store下载),不是很方便,特别是国内环境。我一般是这样初始化OpenCV
if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); //用这种方式初始化需要额外安装apk(监测到没有安装会提示去google play 下载) OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { //这种方式使用本地lib Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); }
具体的关于OpenCV的使用可以参考:
http://blog.csdn.net/sbsujjbcy/article/details/49520791
相关文章推荐
- Android DrawerLayout 高仿QQ5.2双向侧滑菜单
- Android系统之路(初识MTK) ------ 内置三方apk到Rom可移动/可卸载
- Import adt 项目到android studio解决的问题总结
- RichEditor for Android 是 Android 平台下一个所见即所得的文本编辑器控件。
- android studio preview 出现 Rendering Problems的解决方法
- Android app native代码性能分析
- Android 实例:在Activity 之间传递数据的intent
- Android开源类库和工具集合
- Android Espresso单元测试
- Android Studio 代码混淆
- Android中保存和恢复Fragment状态的最好方法
- Android隐藏虚拟按键,关闭开机动画、开机声音
- Android 5.0系统以上获取所有运行进程
- Android——谷歌官方下拉刷新控件SwipeRefreshLayout
- 谷歌J2ObjC:打破Android应用与iOS应用之间的语言障碍
- Android Studio 下获取应用的数字签名MD5、SHA1方法
- 教你搞定Android自定义View
- Android 解决APN无权限问题
- Android 动画之RotateAnimation应用详解
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解