为什么OpenCV(cv2.pyd)的Python构建如此之小?

为什么OpenCV(cv2.pyd)的Python构建如此之小?,python,opencv,Python,Opencv,我想在Python中使用OpenCV,所以我下载了OpenCV for Windows,解压缩后得到了一个~3.7GB的文件夹。令我惊讶的是,我唯一需要的文件是cv2.pyd,它与C版本(674MB)相比非常小(11MB)。我只是简单地将它复制到我的pythonlibpackages文件夹中,而没有向我的路径添加任何内容,它工作得非常好 我不知道Python绑定是如何工作的,我认为它应该在幕后调用C/C++实现。然而,cv2似乎并不需要任何C/C++库。对我来说,这简直是个魔术。很可能与静态链接

我想在Python中使用OpenCV,所以我下载了OpenCV for Windows,解压缩后得到了一个~3.7GB的文件夹。令我惊讶的是,我唯一需要的文件是cv2.pyd,它与C版本(674MB)相比非常小(11MB)。我只是简单地将它复制到我的pythonlibpackages文件夹中,而没有向我的路径添加任何内容,它工作得非常好


我不知道Python绑定是如何工作的,我认为它应该在幕后调用C/C++实现。然而,cv2似乎并不需要任何C/C++库。对我来说,这简直是个魔术。

很可能与静态链接和使用或中的所有可能技巧有关

OpenCV使用as构建系统,该系统提供“MinSizeRel”构建类型。它似乎自动应用了大部分这些技巧。找不到任何关于这方面的好文档,因此:


(遵循我的原始答案,但没有完全解决实际问题)

获取opencv for python更方便的方法可能是从以下位置下载:

运行安装程序后,您将在
c:\python27\lib\site包中找到
cv2.pyd

就我们而言,
.pyd
文件与
.dll
相同:

这意味着我们可以用它来调查。这就是我们看到的:


此图表示
cv2.pyd
与包含实际功能的opencv库动态链接。这些文件占用了大约45MB的磁盘空间。

但我的站点包文件夹中甚至没有这些OpenCV DLL文件。