【发布时间】:2018-06-11 05:06:06
【问题描述】:
我正在尝试手动编译 SDK,但生成的 .dylibs 和 .so 大小超过 70mb:
➜ lib ✗ pwd
/Users/gond/opencv/build/lib
➜ lib ✗ du -h .
71M
这是我正在使用的命令:
cmake -D CMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
有什么办法可以缩小尺寸吗?最终我想为 Android 编译 opencv,但是对于一个合理的应用程序来说,70mb 的库太大了。
任何想法表示赞赏。
更新:
这是使用上述命令生成的最大 10 个库的列表:
38M libopencv_imgproc.3.4.0.dylib
13M libopencv_core.3.4.0.dylib
4.1M libopencv_dnn.3.4.0.dylib
3.1M cv2.so
2.9M libopencv_imgcodecs.3.4.0.dylib
1.9M libopencv_calib3d.3.4.0.dylib
1.3M libopencv_ts.a
1.2M libopencv_java340.dylib
916K libopencv_photo.3.4.0.dylib
以下是使用 Android 选项的最大 10 个列表:
40M libopencv_java3.so
6.0M libopencv_imgproc.a
5.5M libopencv_core.a
2.5M libopencv_ximgproc.a
2.4M libopencv_calib3d.a
1.6M libopencv_ts.a
1.5M libopencv_photo.a
1.5M libopencv_ml.a
1.3M libopencv_features2d.a
奇怪的是,libopencv_imgproc.3.4.0.dylib 是 38mb 而libopencv_imgproc.a 是 13mb。有没有办法省略“子模块”?例如,有没有一种方法可以省略运动分析、对象检测但保留 ColorMaps?
【问题讨论】:
-
除非您构建了单一的
world变体,否则每个 OpenCV 模块都有一个库。所以弄清楚你真正需要哪些(基于你正在使用的功能)——这可能是一个小得多的子集。 -
@DanMašek 使用上面的命令,最大的库是
.dylibforimproc,即 38mb。它可以以某种方式剥离吗?此外,如果我使用 Android 选项构建,则生成的libopencv_java3.so本身就是 40mb。还有其他.a库,但最大的库约为 6mb。
标签: opencv build cmake opencv4android