我目前正在开发一个涉及 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。
如果您使用的是静态库,只需将需要的 lib 复制到 ../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。现在使用链接中的方法构建库(在帖子开头给出)。将新库复制到 sdk 文件夹。
关于c++ - 如何只保留 opencv android 库的一个模块(Canny Edge Detection)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179035/