android - 如何在 Android App 中集成 OpenCV Manager

标签 android opencv

我在我的 Android 应用程序中使用 OpenCV2.4.7 库。当应用程序启动时,它会转到名为 OpenCV Manager 的应用程序的 Google Play 商店。有没有办法将此应用程序集成到我的 Android apk 中,因为 我们已经在使用 OpenCV 库,所以为什么应用程序需要再次使用 OpenCV 引擎? 他们有什么方法可以集成这个引擎吗?

最佳答案

是的。要将 OpenCV 集成到您的应用程序中,并避免显式安装 OpenCV 管理器,您需要首先阅读 OpenCV 提供的以下文档。

初读 -> Static Initialization of OpenCV

成功执行步骤后,您需要在应用程序初始化代码中编写以下代码以启用 OpenCV,然后再调用 OpenCV API。例如,可以在 Activity 类的静态部分中完成:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

引用资料:

  1. http://answers.opencv.org/question/2033/use-opencv-on-android-without-manager/
  2. Static Initialization on OpenCV Android

编辑

根据 Document 中的新场景,感谢 @rozhok 提供新信息,initDebug() 方法不能用于生产构建

Note This method is deprecated for production code. It is designed for experimental and local development purposes only. If you want to publish your app use approach with async initialization.

您需要使用以下方法

语法

static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)

示例

public class Sample1Java extends Activity implements CvCameraViewListener {

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i(TAG, "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    @Override
    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
    }

    ...
}

引用文献

  1. http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html

关于android - 如何在 Android App 中集成 OpenCV Manager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259309/

相关文章:

android - Google Play 服务多人游戏参与者的身份

opencv - 如何使用opencv提取5个方向边缘?

opencv - 进行 Min-Max 归一化的正确方法

c++ - 具有 3 个 channel 的 nppi 调整大小功能得到奇怪的输出

Java - 从流数据包中保存 RTSP 快照

android - Chromecast 是否特别兼容 YouTube Android Player API?

java - 如何以独立于操作系统的方式将 rt.jar/classes.jar 包含在 Proguard 配置中?

Android InApp Billing : The item you requested is not available for purchase. 在不同的谷歌账户上不一致

android - 在手势库中存储和检索手势

android - 使用opencv在android中抓取连续帧