我目前正在开发一个涉及Canny Edge Detection的android应用程序。我决定使用比使用 Java 快得多的opencv库。所以我将libopencv_java.so文件放在了它们各自的目录中。它有效,但导致了巨大的 apk 大小。我不太了解 C++ 语言。是否可以生成仅包含边缘检测所需组件的 libopencv_java.so 文件以减小 apk 大小?
如果是,如何?
否则请建议其他快速和较小的库在 android 中执行 Canny 边缘检测。
我目前正在开发一个涉及Canny Edge Detection的android应用程序。我决定使用比使用 Java 快得多的opencv库。所以我将libopencv_java.so文件放在了它们各自的目录中。它有效,但导致了巨大的 apk 大小。我不太了解 C++ 语言。是否可以生成仅包含边缘检测所需组件的 libopencv_java.so 文件以减小 apk 大小?
如果是,如何?
否则请建议其他快速和较小的库在 android 中执行 Canny 边缘检测。
您可以使用此处提到的方法为 android 构建 lib。
https://zami0xzami.wordpress.com/2016/03/17/building-opencv-for-android-from-source/
我猜你正在使用 JNI 来实现你的工作,你必须使用 opencv-Android-sdk。
如果您使用静态库,只需将所需的库复制到../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文件夹。