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

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

我目前正在开发一个涉及 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. 如果您使用的是静态库,只需将需要的 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/

相关文章:

python - 使用 PIL 复制三角形图像区域

c++ - 带括号的 Visual Studio (C++) IntelliSense

c++ - 将行代码从C++转换为C

Python opencv特征检测器导致段错误

android - 仅当应用程序通过 Eclipse-Android 连接时才加载 Open CV

iphone - iPhone 上的光学字符识别

c++ - 使用带有命名空间的 cvShowImage

c++ - 找不到链接库的符号

python - 在 Python 中使用 OpenCV 进行模板匹配

matlab - 使用riesz变换分析后的相移图像内容