
1.3.1 在Windows上安装
Windows没有预先安装Python。但是,Python提供了一个安装向导和一个名为pip的包管理器,可以让我们轻松安装现成的NumPy、SciPy和OpenCV。或者,我们可以从源代码构建OpenCV,以便启用非标准特性,比如通过OpenNI 2支持深度摄像头。OpenCV的构建系统使用CMake来配置系统并使用Visual Studio进行编译。
在做其他事情之前,首先来安装Python。访问https://www.python.org/getit/下载并运行Python 3.8安装程序。尽管OpenCV也可以使用32位的Python,但是你可能想要64位的Python安装程序。
一旦安装了Python,就可以使用pip安装NumPy和SciPy了。打开命令提示符,运行下面的命令:

现在,我们必须确定我们是需要一个现成的OpenCV(不支持深度摄像头)还是需要一个自定义OpenCV(支持深度摄像头)。接下来将介绍这些备选方案。
1.使用现成的OpenCV包
OpenCV包含opencv_contrib模块,可以作为一个pip包来安装。这和运行以下命令一样简单:

如果希望OpenCV安装包含非免费的内容(如专利算法),那么可以运行以下命令:

如果打算发布依赖于OpenCV非免费内容的软件,你应该自己调研适用于特定国家和特定用例的专利和许可问题。OpenCV的非免费内容包括专利SIFT和SURF算法的实现,这些内容将在第6章中进行介绍。
你可能会发现其中一个pip包提供了你目前想要的所有OpenCV特性。另外,如果你打算使用深度摄像头,或者想要了解OpenCV自定义构建的一般过程,那么不应该安装OpenCV的pip包,而应该从源代码构建OpenCV。
2.从源代码构建OpenCV
如果希望支持深度摄像头,那么还应该安装OpenNI 2,它是带有安装向导的一组预编译二进制文件。然后,我们必须使用CMake和Visual Studio从源代码构建OpenCV。
要获取OpenNI 2,请访问https://structure.io/openni,并根据Windows和系统架构(x64或者x86)下载最新版本的压缩文件。将其解压,得到一个安装程序文件,如OpenNI-Windows-x64-2.2.msi。运行安装程序。
现在,我们来安装Visual Studio。要构建OpenCV 4,我们需要Visual Studio 2015或者更高版本。如果还没有合适的版本,可访问https://visualstudio.microsoft.com/downloads/,下载并运行下面列出的安装程序之一:
·免费的Visual Studio 2019社区版。
·Visual Studio 2019付费版,试用期为30天。
在安装过程中,确保勾选所有可选的C++组件。安装完成后,重新启动。
对于OpenCV 4,构建配置过程需要CMake 3或以上版本。访问https://cmake.org/download/,下载并安装适用于自己的架构(x64或x86)的CMake最新版本的安装程序,然后运行它。在安装过程中,选择“Add CMake to the system PATH for all users”或者“Add CMake to the system PATH for current user”。
在这个阶段,我们已经为OpenCV自定义构建安装了依赖项并建立了环境。现在,我们需要获取OpenCV源代码,配置并构建它。
这可以通过以下步骤来完成:
(1)访问https://opencv.org/releases/,获取Windows的最新OpenCV下载程序。它是一个自解压的压缩文件。运行它,在出现命令提示符时,输入任意目标文件夹,我们将其命名为<opencv_unzip_destination>。在解压过程中,会在<opencv_unzip_destination>\opencv中创建一个子文件夹。
(2)访问https://github.com/opencv/opencv_contrib/releases,下载opencv_contrib模块的最新压缩文件。把这个文件解压到任意目标文件夹,我们将其命名为<opencv_contrib_unzip_destination>。
(3)打开命令提示符,运行以下命令,生成构建文件将放入的另一个文件夹:

把目录更改为build文件夹:

(4)现在,我们已经准备好使用CMake的命令行界面来配置构建了。要理解所有的选项,可以阅读<opencv_unzip_destination>\opencv\CMakeLists.txt中的代码。但是,就本书而言,我们只需要使用一些选项,这些选项将赋予我们带有Python绑定、opencv_contrib模块、非免费内容,并通过OpenNI 2支持深度摄像头的一个发布构建。根据Visual Studio版本和目标架构(x64或x86),一些选项稍有不同。要创建适用于Visual Studio 2019的64位(x64)解决方案,运行以下命令(但是请用实际路径替代<opencv_contrib_unzip_destination>和<opencv_unzip_destination>):

要创建适用于Visual Studio 2019的32位(x86)解决方案,运行以下命令(但是请用实际路径替代<opencv_contrib_unzip_destination>和<opencv_unzip_destination>):

在运行上述命令时,它将打印有关找到或者丢失的依赖项的信息。OpenCV有很多可选的依赖项,所以不要因丢失依赖项而惊慌。但是,如果没有成功完成构建,可以尝试安装丢失的依赖项。(很多依赖项都可以作为预构建的二进制文件使用。)然后,重复这个步骤。
(5)CMake将会在<opencv_build_folder>/OpenCV.sln中生成一个Visual Studio解决方案文件。在Visual Studio中打开它。请确保在Visual Studio窗口顶部附近工具栏的下拉列表中勾选了“Release”配置(而不是“Debug”配置)。(很可能不在Debug配置中构建OpenCV的Python绑定,因为大多数Python发行版本都不包含调试库。)访问“BUILD”菜单,选择“Build Solution”。查看窗口底部“Output”面板中的构建信息,等待构建完成。
(6)在这个阶段,已经构建好了OpenCV,但是还没有把OpenCV安装到Python可以找到的位置。在进行下一步之前,请确保Python环境没有包含冲突的OpenCV构建。找到并删除Python的DLL文件夹和site_packages文件夹中的所有OpenCV文件。例如,这些文件可能匹配以下模式:C:\Python37\DLLs\opencv_*.dll、C:\Python37\Lib\site-packages\opencv和C:\Python37\Lib\site-packages\cv2.pyd。
(7)最后,安装OpenCV的自定义构建。CMake已经生成了一个INSTALL项目作为OpenCV.sln Visual Studio解决方案的一部分。查看Visual Studio窗口右侧的“Solution Explorer”面板,找到“CMakeTargets | INSTALL”项目,右键单击,并从“context”菜单选择“Build”。同样,查看窗口底部“Output”面板中的构建消息,并等待构建完成。然后,退出Visual Studio。编辑系统的Path变量,并添加;<build_folder>\install\x64\vc15\bin(对于64位构建)或者;<build_folder>\install\x86\vc15\bin(对于32位构建)。这个文件夹是INSTALL项目放置OpenCV DLL文件(Python在运行时动态加载的库文件)的地方。OpenCV Python模块位于诸如C:\Python37\Lib\site-packages\cv2.pyd这样的路径下。Python将在此找到它,因此你不需要将其添加到Path中。注销并重新登录(或者重新启动)。
上述指令指的是编辑系统的Path变量。也可以在控制面板的“Environment Variables”窗口中按照如下步骤完成这项任务:
(1)单击“开始”菜单并启动控制面板。导航到“System and Security”→“System”→“Advanced system settings”。单击“Environment Variables...”按钮。
(2)现在,在“System Variables”下,选择“Path”,单击“Edit…”按钮。
(3)根据指示进行更改。
(4)要应用这些更改,请单击所有的“OK”按钮(直到回到控制面板的主窗口)。
(5)然后,注销并重新登录(或者重新启动)。
现在,我们已经在Windows上完成了OpenCV的构建过程,而且拥有了适合本书所有Python项目的一个自定义构建。
今后,如果想把OpenCV源代码更新到新版本,请从下载OpenCV开始,重复上述所有步骤。