首页 > 解决方案 > 为什么我们不只通过引用 OpenCV 源代码而不是其二进制文件来开发 OpenCV 应用程序?

问题描述

在开发 OpenCV 应用程序时,大多数书籍或网站中解释的常见工作流程是通过执行以下操作:

  1. 可选择从下载的 OpenCV 源代码构建 OpenCV 二进制文件。我说它是可选的,因为对于那些在 Windows 上使用 Visual Studio 工作的人来说,预构建的 OpenCV 二进制文件由 OpenCV 正式包含,因此他们不需要执行此步骤。
  2. 如果 OpenCV 二进制文件可用,我们会通过创建自己的引用二进制文件的代码来开发 OpenCV 应用程序。

问题

上述工作流程似乎使应用程序的文件大小相对较大,因为我们必须包含 OpenCV DLL,其中包含许多我们可能不会在应用程序中使用的代码。

为什么我们不直接引用 OpenCV 源代码来开发我们的应用程序,以便我们可以最小化应用程序的文件大小?

标签: c++opencv

解决方案


OpenCV 是非常模块化的,您不必与不使用的 DLL 链接。例如,如果你不使用该videoio模块,则不需要与它链接,也不需要发送相应的 DLL。

如果这还不足以减少大小,您可以静态链接 OpenCV,这允许链接器删除未使用的代码。

将 OpenCV 源代码添加到您自己的项目中会产生相同的效果,但您必须复制 OpenCV 构建系统为您所做的一切,例如查找依赖项和设置编译器标志。这是一个巨大的麻烦。

此外,在 Linux 等平台上,通常使用包管理器在中央位置安装 OpenCV 二进制文件一次,并且所有应用程序都依赖于它们的安装。这导致这些平台上的应用程序尽可能小。


推荐阅读