如何在Android App中集成OpenCV Manager

时间:2013-11-28 06:37:57

标签: android opencv

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

4 个答案:

答案 0 :(得分:23)

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

首次阅读 - > Static Initialization of OpenCV

在成功执行步骤之后,您需要编写以下代码以在调用OpenCV API之前在应用程序初始化代码中启用OpenCV。例如,它可以在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
  3. 修改

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

      

    注意对于生产代码,不推荐使用此方法。它仅用于实验和本地开发目的。如果要使用异步初始化发布应用程序使用方法。

    您需要使用以下方法

    <强> 语法

    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

答案 1 :(得分:1)

这是文档中关于OpenCV Manager安装的说明:

  

apk 文件夹包含应安装在目标Android设备上的Android软件包,以通过OpenCV Manager API启用OpenCV库访问(详见下文)。

     

在可以访问Google Play Market(和Internet)的生产设备上,这些软件包将在使用OpenCV Manager API首次启动应用程序时从Market安装。

     

...

     

注意:从Internet安装是首选,因为OpenCV团队可能会在Market上发布此软件包的更新版本。

您可以在此处详细了解:https://docs.opencv.org/3.0-beta/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#general-info

答案 2 :(得分:0)

  1. 在OpenCV.mk文件中包含$(CLEAR_VARS)后插入此行
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    include D:/opencv_with/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk
    
  2. 在当前项目目录中,libs文件夹复制OpenCV库中的所有文件夹。

  3. 添加您的活动

    if (!OpenCVLoader.initDebug()) {
                Log.d("ERROR", "Unable to load OpenCV");
            } else {
                mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
            }
    
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                case LoaderCallbackInterface.SUCCESS: {
    
                    //Your opencv Operation code
    
                }
                }
            }
        };
    

答案 3 :(得分:-5)

只需评论以下代码

中的行
@Override
public void onResume()
{
    super.onResume();
    //OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);

}