VR/AR动手玩(一):在Android应用中集成opencv

来源:互联网 发布:mac突然无法连接wifi 编辑:程序博客网 时间:2024/06/07 22:47

决定开始DIY VR玩玩(其实我想说的是AR~~)。目标是1、识别并显示视野范围内人员、物体的信息(表目标);2、如果可以的话,将人物替换成衤果亻本(里目标)。
严肃的表情这是一个严肃的表情

动手之前,想想需要的知识储备:
1、opencv图像识别
2、android开发
3、虚幻引擎安卓开发(或许不用也行)
4、光学知识
5、硬件组装和设备驱动

幸好每样都玩过一点点,开始动手。

一、在Android应用中集成opencv

opencv官网默认介绍的是eclipse下的安装,然而现在安卓改用Android Studio了,查找了一些资料,并不麻烦,下面是步骤。
首先创建安卓工程,例如E:\Projects\VRShow。再从opencv官网下载OpenCV-3.1.0-android-sdk.zip并解压,假设在E:\tmp\OpenCV-android-sdk目录。
在Android Studio中,选择菜单File->New->Import Module。
ImportModule截图

选择opencv路径,在本例中,应该是在E:\tmp\OpenCV-android-sdk\sdk\java。选择好路径后,会自动生成Module name为openCVLibrary310。
ImportModule路径截图

接下来弹出的对话框,按默认保持三个勾都选上就可以了(没有试过不选会有什么结果)。
ImportModule选项截图

接下来要修改opencv的gradle配置。
在当前视图下,可能会看不到openCVLibrary310的路径:
修改视图截图

需要先将Android改为Project,如下图所示,这样才能打开openCVLibrary310下的build.gradle文件。
Project视图截图

这一步的重点是修改opencv里面的Android SDK版本,使之与app一致。所以先打开app/build.gradle文件,记下compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion这四个值,然后复制到openCVLibrary310/build.gradle,依次替换相应的值。

接下来执行菜单Build->Make Project。构建完成后,再回到Android视图,就会看到已经出现openCVLibrary310模块了。

然而在app中运行opencv还需要二进制库文件,二进制库就在opencv的解压目录下。将E:\tmp\OpenCV-android-sdk\sdk\native\libs整个目录拷贝到项目文件夹的openCVLibrary/src/main目录下,并改名为jniLibs。在本例中,即是E:\Projects\VRShow\openCVLibrary310\src\main\jniLibs。

现在添加对opencv的依赖,点击菜单File->Project Structure,选择app模块下的Dependencies标签,并点击右边的+号。
添加ModuleDependencies截图

添加Module Dependency,并选择opencv:
添加opencvModule截图

OK确认后,测试一下opencv是否能运行,在Activity的onCreate()方法中加入如下代码:

if(OpenCVLoader.initDebug()) {    Log.e("efantest", "OpenCV init OK.");} else {    Log.e("efantest", "OpenCV init Failed.");}

马上运行一下,应该能在logcat看到结果。下一步,要在Android工程下调用opencv试试。

参考资料http://stackoverflow.com/questions/27406303/opencv-in-android-studio

0 0
原创粉丝点击