OpenCV是一个广泛应用于计算机视觉领域的大而全的开源图形图像库,OpenCV提供了丰富而强大的功能,主要包含:图像处理、特征检测和描述、目标检测和跟踪、视频分析、三维重建、图像分割、机器学习、深度学习。有时候我们的项目中并不需要用到那么多功能。在部署轻量化的项目时,对OpenCV进行模块定制裁剪显得尤为重要。本文主要介绍了OpenCV模块定制裁剪的方法。
一、了解OpenCV模块化结构
OpenCV模块结构如下图所示:得益于OpenCV的模块化结构,我们可以轻松实现OpenCV模块定制裁剪。
二、梳理项目中用到的OpenCV模块及其依赖模块
这一步的重点是梳理OpenCV各模块之间的依赖关系。以highgui模块为例,进入sources文件夹modules下的highgui模块,查看CMakeLists中的ocv_add_module,可以看到highgui模块的 依赖模块有2个,分别是imgproc及imgcodecs。
使用同样的方法可以梳理出项目需要用到的模块,本项目梳理结果如下图所示
三、使用cmake-gui及vs2019对OpenCV进行模块定制裁剪
1.打开cmake-gui,选择已安装的完整的OpenCV源码路径,点击左下的Configure按钮;
2.在Build OpenCV模块中(下图中的大方框),只勾选需要的模块,注意要勾选opencv_world模块,这样可以把选中的模块打包到一个opencv_worldXXX.dll中,再次点击左下的Configure按钮;
3.配置完成后得到如下图所示的状态,点击Generate按钮
4.出现下图状态时说明generate成功了,接下来打开vs2019,打开mybuild项目;
5.根据项目需要选择Debug或者Release版本,生成项目;
6.选择install,右键选择“仅用于项目”--》“仅生成INSTALLll”,这样会在mybuild文件夹中生成一个单独的install文件夹,其中的opencv_world包含了所有选中的模块,至此,OpenCV模块定制裁剪完成。