是什么让 OpenCV 在 Windows 上如此大?我能做些什么吗?

jle*_*lew 2 windows opencv emgucv

适用于 Windows 的 OpenCV x64 发行版(通过 emgucv)具有近半 GB 的 DLL,包括一个 224Mb 的 opencv_gpu.dll。任何人似乎都不太可能产生这么多代码,那么是什么给出了呢?大型嵌入式资源?代码生成膨胀(鉴于它是本机 c/c++ 项目,这似乎不太可能)

我想用它来进行人脸识别,但是在git中有这么大的二进制依赖是一个问题,而且在源代码控制之外进行管理很麻烦。

[更新] 没有嵌入式资源(至少是 Windows DLL 通常具有的那种,但由于这是一个跨平台产品,我不确定这是否重要。)也许有很多初始化的 C 表结构来执行矩阵运算?

And*_*aev 5

的大小opencv_gpu是为多个 CUDA 架构版本编译的大量模板实例的结果。

以卷积为例:

  • 7 种数据类型(从CV_8UCV_64F
  • ~30 个编码大小的卷积核
  • 8 种 CUDA 架构(bin:1.1 1.2 1.3 2.0 2.1(2.0) 3.0 + ptx:2.0 3.0)

这会产生大约 1700 种卷积变体。opencv_gpu对于最新的 OpenCV 版本,这种方式可以增长到 1 Gb。

如果您不打算使用任何 CUDA 加速,那么您可以安全地删除 opencv_gpu.dll