最近在学习视觉算法的时候,想着如果利用手机的摄像头做一些实时的图像处理也是很方便的,生活中也有些场景可以做一些好玩的应用,于是就开始在android上搭建OpenCV环境。参考了一些网上的帖子,有些比较久远了,像Android Studio的版本,目前已经更新到3.0.1了,各方面都完善了很多,而OpenCV也发展到3.4.1版了,所以一些比较有年代的帖子介绍的方法不一定适用于今天,我研究了好些个帖子,最终顺利搭建好了,所以趁着记忆还热乎把这个过程记录一下,以备以后再要装的时候参考。
下载
1.首先,安装Android Studio,我安装的是目前最新的Android Studio3.0.1版本,完全参考了一篇网上的教程,一步步照着做下来,没有问题。
2.下载OpenCV sdk for Android,我是在官网下的OpenCV3.4.1最新版,解压(我的解压路径是D:\AndroidSDK\OpenCV-android-sdk)
3.新建项目,File-New-New Project,取个名字
点下一步,
Minimum SDK 选择 API 19:Android 4.4 (KitKat),再点“Next”
选择Empty Activity,直到“Finish”
导入OpenCV
Android Studio菜单-->File-->New-->Import Module
选择D:\AndroidSDK\OpenCV-android-sdk\sdk\java
Module name: Android studio会自动填充这项为openCVLibrary341 ,不用自己改,如下图:
点“Next”,下一步,默认的三个全勾上
1)File-->Project Structure
2)左边Modules栏下选择app
3)在右边上面一栏中选择Dependencies
4)点击右边栏中的“+”,选择第三个Module Dependency
5)点击ok退出,然后再点击ok退出
1)将视图由Android切换到Project,如图所示
2)点击app,打开app根目录下的build.gradle文件,注意
compileSdkVersion,
buildToolsVersion,
minSdkVersion,
targetSdkVersion
后面的数值
3)点击openCVLibrary341,打开根目录下的build.gradle文件,把文件中
compileSdkVersion,
buildToolsVersion,
minSdkVersion,
targetSdkVersion,
后的数值改成和上一步app中一样的
1)把OpenCV sdk for Android文件下D:\AndroidSDK\OpenCV-android-sdk\sdk\native下的libs文件夹拷贝到自己的安卓项目下,我的是TestOpencvAd\app\src\main下面,并且将libs改名为jniLibs.
2)此时前期准备工作就完成了,可以开始自己写代码了。
测试
可以用opencv中的sample程序测试下
-
将OpenCV-android-sdk\samples\image-manipulations\src\org\opencv\samples\imagemanipulations中的ImageManipulationsActivity.java文件,拷贝到自己的安卓项目TestOpencvAd\app\src\main\java\com\xiaoma\opencvtest下,打开原来的MainActivity.java文件,看第一行的包名,我的是
package scr.testopencvad;
把这一行拷贝,用来替换掉ImageManipulationsActivity.java文件中的package一行。然后可以删掉MainActivity.java文件
将OpenCV-android-sdk\samples\image-manipulations\res中的三个文件(如图所示),拷贝到你的安卓项目TestOpencvAd\app\src\main\res下(与目录下的同名的三个文件合并)
将OpenCV-android-sdk\samples\image-manipulations中的AndroidManifest.xml文件,拷贝到你的安卓项目TestOpencvAd\app\src\main下替换
打开AndroidManifest.xml,
改包名,找到第三行的package,改为package="scr.testopencvad"
找到”android:theme”行,修改为
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
- 将uses-sdk android:minSdkVersion的值改成之前记下的版本号的值,
因为原版的是fullscreen状态,导致打开后看不见菜单,这么改了以后就没问题了。
build apk
假如手机运行时弹出
“It seems that you device does not support camera(or it is locked).Application will be closed.”
这时候打开手机的应用权限管理,允许这个程序的访问相机就好了。
接下来就可以在这个基础上继续改进算法,研究更好玩的应用了。
参考
https://jingyan.baidu.com/article/60ccbceb53533364cab197db.html