c++ - 为什么我们不只通过引用 OpenCV 源代码而不是其二进制文件来开发 OpenCV 应用程序?
问题描述
在开发 OpenCV 应用程序时,大多数书籍或网站中解释的常见工作流程是通过执行以下操作:
- 可选择从下载的 OpenCV 源代码构建 OpenCV 二进制文件。我说它是可选的,因为对于那些在 Windows 上使用 Visual Studio 工作的人来说,预构建的 OpenCV 二进制文件由 OpenCV 正式包含,因此他们不需要执行此步骤。
- 如果 OpenCV 二进制文件可用,我们会通过创建自己的引用二进制文件的代码来开发 OpenCV 应用程序。
问题
上述工作流程似乎使应用程序的文件大小相对较大,因为我们必须包含 OpenCV DLL,其中包含许多我们可能不会在应用程序中使用的代码。
为什么我们不直接引用 OpenCV 源代码来开发我们的应用程序,以便我们可以最小化应用程序的文件大小?
解决方案
OpenCV 是非常模块化的,您不必与不使用的 DLL 链接。例如,如果你不使用该videoio
模块,则不需要与它链接,也不需要发送相应的 DLL。
如果这还不足以减少大小,您可以静态链接 OpenCV,这允许链接器删除未使用的代码。
将 OpenCV 源代码添加到您自己的项目中会产生相同的效果,但您必须复制 OpenCV 构建系统为您所做的一切,例如查找依赖项和设置编译器标志。这是一个巨大的麻烦。
此外,在 Linux 等平台上,通常使用包管理器在中央位置安装 OpenCV 二进制文件一次,并且所有应用程序都依赖于它们的安装。这导致这些平台上的应用程序尽可能小。
推荐阅读
- screen - 将 TForm 调整为当前
- c# - 删除字符串直到字符被识别
- java - 如何获取用户输入 x 次并在循环外打印
- ffmpeg - 如何使用 FFmpeg libx264 避免颜色偏移
- node.js - 反应客户端:websocket.js:83 WebSocket 连接到 'ws://localhost:3009/socket.io/?EIO=4&transport=websocket' 失败:
- reactjs - React i18next 服务器端渲染
- python-3.x - plt.hist() 生成的直方图差异
- excel-2010 - 使用 Excel 2010 查找文本和值
- reactjs - 上传到s3,响应对象
- karate - 更改司机位置