如何只保留 opencv android 库的一个模块(Canny Edge Detection)?

How to keep only a module (Canny Edge Detection) of opencv android library?

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

如果是,怎么样?

否则请建议其他快速和较小的库在 android 中执行 Canny 边缘检测。

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

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

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

  1. 如果你使用的是静态库copy只需要lib到../OpenCV-3.1.0-android-sdk1/sdk/native/libs/(Target-abi文件夹).

    2.If 您正在使用共享的那么您将需要 libopencv_java.So 来减小大小,从 libopencv_java.so.To 中删除不需要的库 删除此库转到 /opencv/modules/MODULE_NAME/CMakeLists.txt 找一条线 ocv_define_module(imgproc opencv_core WRAP java python) 并从此行中删除 java。

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