Android上OpenCV物体识别例子

在Android上运行深度学习例子

OpenCV文档详细介绍了一个Android上运行深度学习做物体识别的例子。
环境:

  • Android Studio 3
  • OpenCV 3.4.1 android-sdk

配置过程:

项目配置的步骤在OpenCV的文档How to run deep networks on Android device有详细说明。
大体上包含下面几步:

  1. 建立一个Android Studio的工程
  2. 把OpenCV作为module导入并且添加为app依赖
    *注意导入module的时候去掉默认的打钩的选项
  3. 把app and OpenCV module的设置为一样的版本Android SDK
  4. 在app gradle 添加 jniLibs 并且拷贝 OpenCV libopencv_java3.so
    *这步主要是避免在android上安装额外的OpenCV manager
  5. 在AndroidManifest.xml添加相机访问权限
  6. 修改代码: 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库实现人脸检测

你可能感兴趣的:(Android上OpenCV物体识别例子)