在Android上运行深度学习例子
OpenCV文档详细介绍了一个Android上运行深度学习做物体识别的例子。
环境:
- Android Studio 3
- OpenCV 3.4.1 android-sdk
配置过程:
项目配置的步骤在OpenCV的文档How to run deep networks on Android device有详细说明。
大体上包含下面几步:
- 建立一个Android Studio的工程
- 把OpenCV作为module导入并且添加为app依赖
*注意导入module的时候去掉默认的打钩的选项 - 把app and OpenCV module的设置为一样的版本Android SDK
- 在app gradle 添加 jniLibs 并且拷贝 OpenCV libopencv_java3.so
*这步主要是避免在android上安装额外的OpenCV manager - 在AndroidManifest.xml添加相机访问权限
- 修改代码: MainActivity and activity_main.xml
如何避免安装OpenCV manager apk
OpenCV的lib so: libopencv_java3.so 可以用OpenCV sdk提供的OpenCV manager apk安装。
也可以把lib so集成到app:
- Add ndk abiFilters and jniLibs for app gradle and copy OpenCV libopencv_java3.so(上面有提到)
- 修改MainActivity 中的onResume方法,调用app package里面的lib:
@Override
public void onResume()
{
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
模型安装路径
MobileNetSSD的模型文件要拷贝到项目assets路径: app/build/intermediates/assets/debug
链接
How to run deep networks on Android device
opencv samples mobilenet-objdetect
OpenCV4Android开发实录(2): 使用OpenCV3.4.1库实现人脸检测