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

时间:2014-01-23 04:32:03

标签: python opencv

我想将OpenCV与Python一起使用,所以我下载了OpenCV for Windows,并在解压缩后获得了~3.7GB的文件夹。让我感到惊讶的是,我需要的唯一文件是cv2.pyd,与C版本(~674MB)相比,它是如此之小(~11MB)。我只是将它复制到我的Python lib-packages文件夹而不向我的PATH添加任何东西,它运行得很好。

我不知道Python绑定是如何工作的,我认为它应该引用C / C ++实现。但是,cv2似乎不需要任何C / C ++库。它对我来说看起来很神奇。

1 个答案:

答案 0 :(得分:1)

很可能与静态链接有关,并使用了"Reducing Executable Size""GCC x86 code size optimizations"

中的所有可能的技巧

OpenCV使用cmake作为构建系统,它提供“MinSizeRel”构建类型。它似乎自动应用了大部分技巧。找不到任何好的文档,因此:[citation needed]


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

获取opencv for python的更方便的方法可能是从以下网址下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

运行安装程序后,您会在cv2.pyd

中找到c:\python27\lib\site-packages

就我们而言.pyd文件与.dll相同:http://docs.python.org/2/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

这意味着我们可以使用Dependency Walker来查看它。这就是我们所看到的:

cv2.pyd

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