如果您使用OpenCV4Android构建应用程序,您的用户是否需要下载openCV管理器/库?

时间:2014-09-06 13:30:02

标签: android opencv

我正在阅读使用OpenCV for Android应用程序,我不确定这些库是否在启动时连接到应用程序本身,或者是否必须为每个用户下载openCV库。

这是我应该考虑的吗?我应该使用其他方法,还是我完全误解了这篇文章:http://www.embedded.com/design/programming-languages-and-tools/4406164/2/Developing-OpenCV-computer-vision-apps-for-the-Android-platform

2 个答案:

答案 0 :(得分:0)

将OpenCv库动态链接到您的应用程序是使用OpenCv进行开发的最佳实践 所以每当有一个新的库更新时,它也会在你的应用程序中自动更新,

但是如果你不这样做,并且你想拥有一个固定的opencv库你就可以做到但是它已被弃用作为一种方法来逐步指导OpenCV4Android

答案 1 :(得分:0)

有两种方法可以使用OpenCV依赖开发应用程序。

首先,要求用户从Play商店下载OpenCV Manager(异步初始化)。

其次是静态初始化。

首先让我解释一下静态初始化。在静态初始化中,您将库包含在项目中。这意味着,无论用户需要什么库,您都可以将其与您的应用程序打包在一起。您可以按照以下步骤进行操作。

1)如果您的应用程序项目没有JNI部分,只需将相应的OpenCV本机库从/ sdk / native / libs /复制到项目目录到文件夹libs /。

2)如果应用程序项目带有JNI部分,而不是手动库复制,则需要修改Android.mk文件:在" include $(CLEAR_VARS)&#之后添加以下两个代码行: 34;之前"包括path_to_OpenCV-2.4.9-android-sdk / sdk / native / jni / OpenCV.mk"

有关完整说明,您可以在http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html

看到

第二种方法是在运行时加载库。该库将由OpenCV提供的名为OpenCV Manager的外部应用程序加载。代码段如下[也取自http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html]

    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);
    }

    ...
   }

OpenCVLoader.initAsync行将使用OpenCV Manager异步加载库。如果未安装,则用户将被重定向到Play商店。

异步初始化是编写OpenCV指南的人通常推荐的方式,因为这样做,你不需要为每个架构包含库,库也会更新。它打破了用户体验;程序的流程。

无论如何,请记住,在异步初始化中,您只能在加载库后开始使用与OpenCV关联的任何代码,从而在您收到SUCCESS状态后。因此,请相应地设计应用程序。