【问题标题】:OpenCV android with out OpenCV manager没有 OpenCV 管理器的 OpenCV android
【发布时间】:2014-07-17 09:09:03
【问题描述】:

我写信是想问你关于 openCV 的问题。

首先,我是一名学习openCV的学生,我想在Android应用程序中使用openCV。

到目前为止,当我运行一些应用程序时,我必须下载“openCV Manager App”..

实际上,我不想在运行应用程序时下载其他应用程序,例如“openCV Manager App”。

所以,我在互联网上搜索了这些问题.. 基本上,我遵循了以下链接的建议,

http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization

还有..

我尝试修改onResum回调方法如下..


public void onResume()
{
    super.onResume();
    // OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
    mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}

另外,我也尝试过这种方式,(其实我也不知道这段代码是在哪里插入的..)


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

但是,运行应用程序时总是出现“UnsatisfiedLinkError”。

我认为这个问题的原因是环境设置..

我已经尝试过以下流程

  1. NDK下载并设置环境变量
  2. 下载 openCV 库
  3. 设置项目目标
  4. 如上执行 OnResume() 方法

我为这个错误困扰了好几个星期,我非常需要帮助。

提前致谢。

【问题讨论】:

标签: android opencv


【解决方案1】:

我也陷入了困境。我就是这样做的。在 Main Activity 的静态部分,

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
    else {
        System.loadLibrary("jni_part"); // load other native libraries
    }
}

不要在onResume() 或其他任何内容中保留任何内容。这样就够了。

在 Android.mk 文件中,

OPENCV_CAMERA_MODULES:=on # If you want Camera module
OPENCV_INSTALL_MODULES:=on

这对我有用。但这也有一些问题。静态调用使它变慢了很多。我使用了CvCameraBridgeViewBase,最高速度约为 5-6 fps。在动态链接中,它大约是 15-18 fps。所以我停止在 Java 部分使用 OpenCV。现在我使用 Android sdk 相机、previewCallback 并将缓冲区发送到我使用 OpenCV 实用程序的 jni。如果您打算这样做,则不再需要OpenCV.intiDebug()。你只需要加载原生的so文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多