【问题标题】:How to keep only a module (Canny Edge Detection) of opencv android library?如何只保留opencv android库的一个模块(Canny Edge Detection)?
【发布时间】:2017-05-01 22:24:46
【问题描述】:

我目前正在开发一个涉及 Canny Edge Detectionandroid 应用程序。我决定使用比使用 Java 快得多的 opencv 库。所以我将 libopencv_java.so 文件放在了它们各自的目录中。它有效,但导致 巨大的 apk 大小。我不太了解 C++ 语言。是否可以生成仅包含边缘检测所需组件的 libopencv_java.so 文件以减小 apk 大小?

如果是,怎么做?

否则请推荐其他更快更小的库来在 android 中执行 Canny 边缘检测。

【问题讨论】:

  • 自己实现?
  • opencv 是开源的,所以你可以修改它。除了 canny 之外,您还需要一些核心功能。照顾许可证的东西。
  • @Micka 感谢您的建议,但问题是库太大了。我无法修改它。我不知道如何只构建它的特定部分。

标签: c++ opencv image-processing android-ndk canny-operator


【解决方案1】:

您可以使用此处提到的方法为 android 构建 lib。

https://zami0xzami.wordpress.com/2016/03/17/building-opencv-for-android-from-source/

我猜你正在使用 JNI 来实现你的工作,你必须使用 opencv-Android-sdk。

  1. 如果您使用静态库,只需将所需的库复制到../OpenCV-3.1.0-android-sdk1/sdk/native/libs/(Target-abi 文件夹)。

    2.如果您使用的是共享库,那么您将需要 libopencv_java。因此,为了减小大小,请从 libopencv_java.so 中删除不需要的库。要删除此库,请转到 /opencv/modules/MODULE_NAME/CMakeLists.txt 找一条线 ocv_define_module(imgproc opencv_core WRAP java python) 并从此行中删除 java。

据我所知,canny edge 是 imgproc 或 core 或 highgui 的一部分。所以修改除这些之外的所有模块的cmakelists。现在使用链接中的方法构建lib(在帖子的开头给出)。将新的lib复制到sdk文件夹。

【讨论】:

  • 网站描述的方法太复杂了;想不通。无论如何感谢您的帮助。
  • 您是否卡在任何特定部分?在我的情况下,我有相同的方法,它有效。哪个部分复杂??
  • 最后,我可以使用静态库摆脱 lib_opencv_java.so 了:D
  • @GarvitaTiwari 我无法使用您指定的第一个选项。
猜你喜欢
  • 2011-11-13
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2022-01-23
  • 2017-07-10
  • 2021-01-28
  • 2013-08-14
相关资源
最近更新 更多