
1.3.2 在macOS上安装
macOS预装了Python的发行版(根据苹果系统内部需求定制的)。为了开发我们自己的项目,我们应该独立安装Python,并确保它与系统的Python需求不冲突。
对于macOS,可能有一些方法可获取标准版Python 3、NumPy、SciPy和OpenCV。所有方法最终都需要对OpenCV使用Xcode命令行工具从源代码进行编译。但是,根据不同的方法,这项任务可以通过第三方工具以各种方式自动完成。我们可以使用一个自制程序的包管理器查看这种方法。包管理器可以潜在地完成CMake能够完成的所有内容,此外,它还可以帮助我们解决依赖项,并将开发库与系统库进行分离。
MacPorts是macOS的另一种流行的包管理器。但是,在编写本书时,MacPorts并不提供OpenCV 4或者OpenNI 2的包,因此本书中将不会使用这个包管理器。
在继续下一步之前,要确保正确地安装了Xcode命令行工具。打开终端,运行以下命令:

同意许可协议以及其他提示内容。安装程序应该运行到完成。现在,我们就有了自制程序需要的编译器。
1.使用现成软件包的自制程序
从已经安装了Xcode及其命令行工具的系统开始,下面的步骤将通过自制程序完成OpenCV的安装:
(1)打开终端,运行以下命令安装自制程序:

(2)自制程序不会将可执行文件自动放入PATH中。为此,创建或编辑~/.profile文件,在代码顶部添加下面这一行内容:

保存文件,运行以下命令刷新PATH:

请注意,现在,由自制程序安装的可执行文件优先于由系统安装的可执行文件。
(3)对于自制程序的自诊断报告,运行下面这条命令:

遵循它给出的所有故障排除建议。
(4)现在,更新自制程序:

(5)运行下面这条命令,安装Python 3.8:

(6)现在,我们想要安装拥有opencv_contrib模块的OpenCV。同时,我们想要安装诸如NumPy之类的依赖项。为此,运行下面这条命令:

自制程序不提供安装带有OpenNI 2支持的OpenCV的选项。自制程序总是安装拥有opencv_contrib模块的OpenCV,包括专利SIFT和SURF算法(见第6章)这样的非免费内容。如果打算发布依赖于OpenCV非免费内容的软件,你应该自己调研适用于特定国家和特定用例的专利和许可问题。
(7)同样,运行下面这条命令,安装SciPy:

现在,我们就拥有了在macOS上基于Python开发OpenCV项目需要的所有内容。
2.使用自定义软件包的自制程序
如果你需要自定义一个软件包,那么自制程序让编辑现有软件包定义变得很容易:

实际上,软件包定义是用Ruby编程语言编写的脚本。可以在网址为https://github.com/Homebrew/brew/blob/master/docs/Formula-Cookbook.md的自制程序维基页面上查找有关编辑包定义的技巧。脚本还可以指定Make或者CMake的配置标志,等等。
要查看哪些CMake配置标志与OpenCV相关,请参考https://github.com/opencv/opencv/blob/master/CMakeLists.txt在GitHub上的官方OpenCV库。
在对Ruby脚本进行编辑之后,请对其进行保存。
自定义包可看作常规包。例如,可以按照如下方式安装自定义包:
