OpenCV 3.1 在 samples目录下有几个示例Demo,其中第一个例子example-tutorial-1-camerapreview,用来获取摄像头输入帧,这篇博客记录了一下这个Demo在Android Studio下开发过程,以此开启OpenCV for Android之旅。
开发环境
Windows 10 x64
JDK 1.8.0
Android 6.0(API 23,最低API 18)
OpenCV 3.1.0 for Android SDK
Android Studio 2.1.1(Gradle版本2.10)
导入OpenCV库
Import Module
点击File->New->Import Module…
,在弹出的窗口中找到OpenCV Android SDK下的sdk\java文件夹,点击Next,保持默认选项不动,再点击Finish,完成OpenCV库的导入。
修改build.gradle
由于OpenCV库本身默认配置,我们需要修改OpenCVLibrary310\build.gradle文件,然后重新同步Gradle配置。修改OpenCVLibrary310\build.gradle文件与项目app的配置一致。修改前如下所示:
修改后如下所示:
具体对penCVLibrary310\build.gradle的修改如下:
1 | apply plugin: 'com.android.library' |
配置模块依赖
点击File->Project Structure…
,在弹出的Project Structure窗口中选择左边的app,在右边选择Dependencies,然后点击绿色添加按钮,选择Module dependency,在弹出的窗口中选择OpenCVLibrary310,一直点击OK,保存并关闭两个窗口。
添加jni库
复制OpenCV-android-sdk/sdk/native目录下的libs目录到工程的main目录下,重命名为jniLibs。
代码编写
这个例子是基于Android Studio构建OpenCV工程,实现了OpenCV捕捉相机输入帧。工程代码已上传至github:OpenCV4AndroidTutorial1,下面简单介绍一下代码。
java代码
一是实现CameraBridgeViewBase.CvCameraViewListener2接口,用于获取摄像头操作;
二是加载OpenCV库,在onResume阶段加载。
具体可查看MainActivity.java
xml布局
加入OpenCV自带的JavaCameraView组件:
1 | <org.opencv.android.JavaCameraView |
manifest清单
添加使用相机权限和文件读写权限,还有应用特性支持:
1 | <uses-permission android:name="android.permission.CAMERA"/> |
运行结果
小结
- 这个小Demo演示了用Android Studio进行OpenCV开发的操作过程。
- 我们自建的项目有两种加载OpenCV库的方式:
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback);
使用OpenCV Manager进行初始化,需要安装对应的OpenCV Manager,这种方式下,配置工程时可以直接跳过添加jni库环节;mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
使用jni库进行初始化。本例用的就是这种方式,无需安装Manger,只是在配置工程的时候添加jni库。