2012-05-24 100 views
4

我正在寻找最小化我的android ndk构建库的大小。如何最小化OpenCv库的大小?

我已经开始使用Android的预构建OpenCv库,截至目前我的lib的大小约为3MB。我怎样才能最小化它的大小?

我只需要读/写文件功能,PNG编码/解码,jpeg解码器和OpenCv的典型图像处理功能,例如resize和cvtColor。

任何指针非常感谢!

+0

您是否希望通过去除不会使用的库的那些组件来最小化库?如果是这样的话,当你去掉图书馆时,这将是一个相当长的绘制过程,具有多个构建周期。 – Samveen

+0

好像你可以在构建时指定标志。类似于ffmpeg使用的方法。 – Jona

+0

您也可以手动将您确实不需要的库源代码部分注释掉,这会导致前面提到的多个构建周期。然而,这是一个冒险的路线。正如您所提到的,最好使用标志。 – Samveen

回答

2

OpenCV库有几个模块,你可能会考虑忽略像'highgui'和'gpu'这样的模块,也许更多取决于你需要和不需要的模块。总之,我不太清楚你需要什么。也许你应该使用不同的小型图书馆,因为阅读,写作,解码,转换等不是真正的计算机视觉操作,如霍夫变换或距离图

你可能会考虑的是cimg btw,你可以很容易地剥离一个,因为它只是定义了越来越多的函数作为cimg类的一部分。

祝你好运!

+1

您可以详细说明如何禁用模块吗? – 2014-01-23 08:34:04

+0

如果您从源代码构建opencv,而不是使用其他软件包管理器(如apt-get)进行安装,则可以使用cmake配置包含哪些模块。自从一年多以前,我做了这件事,我忘记了细节。但是,我发现cmake-gui给了我一个用户友好的界面来做到这一点。不过,编译你自己的库需要你拥有一些linux胸毛,可以这么说。请点击此处查看:http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html。如果您不需要保存千字节,请使用发行版的软件包管理器。 – Herbert

+0

您可以在这里找到所有模块的列表:http://docs.opencv.org/modules/core/doc/intro.html。正如我记得,你也可以禁用库加载更多奇特的图像格式等。以下是使用cmake-gui配置opencv的人的一个例子:http://www.techunited.nl/wiki/index.php?title=How_to_Install_OpenCV。祝你好运! – Herbert

2

你可能已经开始使用你的项目了,Jona,但是其他不使用cmake-gui的人可能会喜欢命令行示例。也就是说,如果你不想CCALIB模块,你可以建立这样的:

cmake的-DBUILD_OPENCV_CCALIB = OFF [其他cmake的标志] ../

操纵打造标志可能不包括你将所有的模块排除但是,它可能是一个开始的好地方。要查看标志选项列表,请打开CMakeLists.txt文件(opencv源目录的顶部)。

打开/关闭标志也不会像手动注释代码一样破坏构建。