最近在学习视觉算法的时候,想着如果利用手机的摄像头做一些实时的图像处理也是很方便的,生活中也有些场景可以做一些好玩的应用,于是就开始在安卓上搭建OpenCV环境。参考了一些网上的帖子,有些比较久远了,像Android Studio的版本,目前已经更新到3.0.1了,各方面都完善了很多,而OpenCV也发展到3.4.1版了,所以一些比较有年代的帖子介绍的方法不一定适用于今天,我研究了好些个帖子,最终顺利搭建好了,所以趁着记忆还热乎把这个过程记录一下,以备以后再要装的时候参考。
下载
1.首先,安装Android Studio,我安装的是目前最新的3.0.1版本,完全参考了一篇网上的教程,一步步照着做下来,没有问题。
2.下载OpenCV sdk for Android,我是在官网下的最新版,解压(我的解压路径是D:\AndroidSDK\OpenCV-android-sdk)
3.新建项目,File-New-New Project,取个名字
01.jpg点下一步,
02.jpg
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 ,不用自己改,如下图:
03.jpg点“Next”,下一步,默认的三个全勾上
04.jpg1)File-->Project Structure
2)左边Modules栏下选择app
3)在右边上面一栏中选择Dependencies
4)点击右边栏中的“+”,选择第三个Module Dependency
05.jpg06.jpg
5)点击ok退出,然后再点击ok退出
1)将视图由Android切换到Project,如图所示
2)点击app,打开app根目录下的build.gradle文件,注意
compileSdkVersion,
buildToolsVersion,
minSdkVersion,
targetSdkVersion
后面的数值
07.jpg
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"
11.jpg
- 将uses-sdk android:minSdkVersion的值改成之前记下的版本号的值,
因为原版的是fullscreen状态,导致打开后看不见菜单,这么改了以后就没问题了。
10.jpg-
build apk
-
假如手机运行时弹出
“It seems that you device does not support camera(or it is locked).Application will be closed.”
这时候打开手机的应用权限管理,允许这个程序的访问相机就好了。
12.jpg接下来就可以在这个基础上继续改进算法,研究更好玩的应用了。
参考
https://jingyan.baidu.com/article/60ccbceb53533364cab197db.html
网友评论
<manifest package="com.example.a510.course" xmlns:android="http://schemas.android.com/apk/res/android";>
<application android:theme="@style/AppTheme" android:supportsRtl="true" android:roundIcon="@mipmap/ic_launcher_round" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:allowBackup="true">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
搞了一晚上,有点方了已经,上网各种查没找到解决方法,跪求楼主解答
couldn't find "libopencv_java341.so"