使用 CMake 和 Visual Studio 在 Windows 上为 Python2 构建和编译 opencv 3.1.0-dev
构建和编译 opencv 3.1.0-dev
以获取非免费模块的访问权限对某些人来说尤其令人头疼,特别是在 Windows 机器上。与 Ubuntu 不同,为 Windows 设置 opencv 需要一些时间,并且在构建和编译之前需要先安装几个 pf 依赖项。
在进一步执行任何步骤之前,你应该下载和安装的程序是:
如果你要下载 Python for Win32,即使你使用的是 64 位计算机,也应该下载 CMake for Win32
建议下载 32 位程序,因为某些 Python 库仅支持 32 位计算机,因此要远离麻烦,只需安装 32 位版本的所有内容即可
-
Numpy for Python2.7 Win32
安装完所有上述依赖项后,重新启动 PC,然后你就可以继续下一步了。
第 2 步:
如果你不喜欢阅读的人,可以观看本教程 。本教程将从这里开始到本文档的末尾。
你需要从 github 获取 opencv 和 opencv_contrib 。你可以在以下位置找到: ****
创建一个名为 opencv-3.1.0 的目录,在此导演中,你将创建另外两个目录,一个用于构建,另一个用于源。提取后,你将把两个下载的 zip 文件放在 sources 文件中。
例如,你的 opencv-3.1.0 目录位于 C 驱动器中,因此你将有三个路径:
C:\opencv-3.1.0
C:\opencv-3.1.0\build
C:\opencv-3.1.0\sources
第三个目录将包含两个路径:
C:\opencv-3.1.0\sources\opencv
C:\opencv-3.1.0\sources\opencv_contrib
现在已经完成了准备工作。让我们做一些有用的东西
第 3 步:
运行 CMake 作为管理员。将出现这样的窗口,你必须提供两个目录,一个用于源,另一个用于编译 opencv。下面的图片可以比文字更好地帮助你。
接下来单击 configure ,你将被提升为提供生成器; 即编译器; 对于 opencv。你必须提供位于 Microsoft Visual Studio 2013 中的 cl.exe
。单击指定本机生成器,将出现如下所示的弹出窗口,
路径将是这样的:C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/cl.exe
。提供 C 和 C++字段的路径。单击完成并等待配置完成。如果你正确执行上述所有步骤,则应该出现零错误。
在 CMake 完成配置后,你将看到 CMake 窗口中出现的新项目以红色突出显示。它将是这样的:
单击小方框,检查所需的构建。搜索 OPENCV_EXTRA_MODULES_PATH
行并在 sources 目录中的 opencv_contrib 中提供 modules 目录。
完成所有需要并提供额外模块的路径后,再次按 configure 进行更新。之前突出显示的行将不再突出显示,新字段将以红色突出显示。
同时选中你需要构建的框。
确保 BUILD_opencv_contrib_world 和 BUILD_opencv_world 都选中。可能存在一个错误,当检查任何后者时会发生错误。
在此步骤结束时单击生成,你将完成 CMake,你可以关闭它。如果没有错误,你将在下方窗格的末尾收到一条消息,说“ 生成完成” 。
第 4 步:
打开 opencv-3.1.0 中的构建目录,你会发现里面有一堆新的文件夹和文件。在此过程开始时它是一个空文件夹。
你将只处理 OpenCV.sln
文件,并且不对其余文件执行任何操作。使用在上一步中在 CMake 中编译时使用的版本打开此文件。它必须是 Visual Microsoft 2013
。
*当你打开 .sln 文件时,请耐心等待,因为需要一些时间来准备建筑物。*当 Ready 准备好 (不变)时,你可以开始构建目标。按照下图中的编号开始构建。还要确保 Solution Configuration
是 Release
而不是 Debug
。
第 5 步:
构建完成后,你需要将构建目录中的几个文件复制并粘贴到 Python27
目录中。
搜索 cv2.pyd
文件并将其复制到 Python27
中的 site-packages
目录。cv2.pyd
应该存在于 C:\opencv-3.1.0\build\lib\Release
中。之后,只将 C:\opencv-3.1.0\build\bin\Release
中的 .dll 文件复制到 Python27
的父目录中 C:\Python27
。
在此步骤结束时,重新启动 PC。
验证:
打开 IDLE 并在 Python shell 类型中:
>>> import cv2
>>> print cv2.__version__
3.1.0-dev