在开始之前,让我们确保已经安装创建一个功能完整的数据科学环境所需的所有工具和库。在从GitHub下载了本书的最新代码之后,我们将安装以下软件:
不想安装这些内容的话,你可以访问https://mybinder.org/v2/gh/PacktPublishing/Machine-Learning-for-OpenCV-Second-Edition/master,由于 Binder 项目,你可以在该网站的一个交互式文件中找到本书的所有代码、可执行环境,以及完全免费的开源代码。
你可以从GitHub https://github.com/PacktPublishing/Machine-Learning-for-OpenCV-Second-Edition获取本书的最新代码。你也可以下载一个.zip包(初学者)或者使用Git的克隆库(中级用户)。
Git是一个版本控制系统,允许你追踪文件中的更改和与他人协作编写代码。此外,网络平台GitHub让人们在一个公共服务器上与你分享他们的代码变得很容易。当作者对代码进行改进时,你可以轻松地更新本地副本、文件错误报告,或者建议代码更改。
如果你选择使用git,第一步是确保安装了它(https://git-scm.com/downloads)。
然后,打开一个终端(或者命令提示符,因为在Windows中要调用命令提示符):
导航到你希望保存下载代码的目录:
然后,你可以通过输入下列代码获取最新代码的本地副本:
这会将下载的最新代码保存在一个名为OpenCV-ML的文件夹中。
一段时间后,代码可能会在线更改。在这种情况下,在OpenCV-ML目录中运行下列命令,你可以更新本地副本:
Anaconda 是由Continuum Analytics开发的用于科学计算的一个免费Python发行版。Anaconda可以在Windows、Linux和macOS X平台上工作,而且是免费的,甚至可以用于商业用途。然而,Anaconda最好的地方在于它附带了大量对数据科学、数学和工程学来说必不可少的预安装包。这些预安装包包括以下内容:
我们所选平台(Windows、macOS X或者Linux)的安装程序可以在Continuum网站(https://www.anaconda.com/download)找到。本书推荐使用基于Python 3.6的发行版,因为Python 2不再是活跃的开发平台。
要运行安装程序,请执行下面的一个操作:
此外,Python Anaconda附带了conda——一个简单的包管理器,类似于Linux上的apt-get。安装成功之后,我们可以在终端输入下列命令,安装新的包:
这里,package_name是我们要安装包的实际名称。
使用下列命令可以更新现有的包:
我们还可以使用下列命令搜索包:
这将弹出开发人员使用的一个完整的包列表。例如,搜索一个名为opencv的包,我们得到的结果如图1-3所示。
图1-3 搜索名为opencv的包,我们得到的搜索结果
这将弹出一长串已经安装了OpenCV包的一个用户列表,允许我们找到在平台上安装了我们版本软件的用户。然后,我们可以安装来自user_name用户中的一个名为package_name的包,安装命令如下:
最后,conda提供了一个名为 environment 的东西,它允许我们管理在其内安装的Python和包的各种版本。这意味着我们可以拥有一个独立的环境,包含运行OpenCV 4.1和Python 3.6所需的所有包。在1.6.3节,我们将创建一个环境,包含运行本书中代码所需的所有包。
我们将执行以下步骤来安装OpenCV:
1)在一个终端,导航到下载以下代码的目录:
2)然后,运行下列命令,基于Python 3.6创建一个conda环境,还将安装environment.yml文件(可以在GitHub库中获取)中列出的所有必要的包:
3)你还可以浏览以下environment.yml文件:
请注意,环境名将是OpenCV-ML。这段代码将使用conda-forge通道下载所有基于conda的依赖项,并使用pip安装OpenCV 4.0(以及opencv_contrib)。
4)要激活该环境,请根据你的平台输入下列选项之一:
5)我们在关闭终端时将会停用该会话——因此在下次打开一个新的终端时,我们将不得不再次运行这最后一条命令。我们还可以手动关闭环境:
完成后,让我们验证一下是否成功地安装了所有这些内容。
最好再仔细检查一下我们的安装。在我们的终端还处于打开状态时,启动IPython,这是运行Python命令的一个交互式shell:
接下来,请确保你(至少)正在运行的是Python 3.6,而不是Python 2.7。你可能会在IPython的欢迎信息中看到版本号。如果没看到版本号,你可以运行下列命令:
现在,试着导入OpenCV,如下所示:
你应该不会得到错误消息。然后,试着找到类似这样的版本号:
请确保读取的OpenCV版本号为4.0.0;否则,稍后你将无法使用某些OpenCV的功能。
OpenCV 3实际上称为cv2。这会让人感到困惑。显然,这是因为2并不代表版本号。相反,这是为了强调底层C API(用前缀cv表示)和C++ API(用前缀cv2表示)之间的不同。
然后,你可以通过输入exit或按下Ctrl+D并确认你想退出,从而退出IPython shell。
另外,因为有了Jupyter Notebook,你可以在web浏览器中运行这些代码了。如果你之前从未听说过Jupyter Notebook或从未使用过它,请相信我——你会喜欢上它!如果你按照前面介绍的说明安装了Python Anaconda栈,那么Jupyter已经安装完毕,那就整装待发吧。在一个终端,输入
这将自动打开一个浏览器窗口,显示当前目录中的一个文件列表。单击OpenCV-ML文件夹,再单击notebooks文件夹,瞧!在图1-4中你会找到这本书的所有代码,准备好探索吧。
图1-4 Jupyter notebooks文件夹中的所有代码
notebooks中的内容是按照章节排列的。在大多数情况下,它们只包含相关的代码,没有附加信息或解释。这些都是为那些通过购买本书支持我们的读者准备的——感谢你们!
只单击你选择的一个notebook,例如01.00-A-Taste-of-Machine-Learning.ipynb,选择 Kernel | Restart | Run All ,你就能够自己运行代码,如图1-5所示。
图1-5 选择要运行的代码界面
有一些方便的快捷键用于导航到Jupyter Notebooks。可是,你现在只需要了解以下几点:
1)单击一个单元格(在图1-4中的突出显示区域——将该区域命名为一个单元格),以便对其进行编辑。
2)在选中单元格后,按下Ctrl+Enter,执行单元格内的代码。
3)或者,按下Shift+Enter,执行一个单元格,并选择它下方的单元格。
4)按下Esc退出写入模式,然后按下A,在当前选中的单元格上方插入一个单元格,按下B,在当前选中的单元格下方插入一个单元格。
单击“ Help | Keyboard Shortcut ”,检查所有的键盘快捷键,或者单击“ Help | User Interface Tour ”进行快速浏览。
但是,强烈建议你按照本书的要求,最好是在IPython shell或一个空白的Jupyter Notebook中亲自动手输入命令。学习编程最好的方法就是亲自动手实践。如果你犯了错误就更好了——我们都有过这样的经历。这就是在实践中学习!
从OpenCV 3.1开始,OpenCV中与机器学习有关的所有函数都被归类到ml模块了。很长一段时间以来,C++ API一直都是这样的。通过在ml模块中显示所有的函数,你可以大致了解相关内容:
如果你安装过OpenCV的一个老版本,那么可能还不存在ml模块。例如,k近邻算法(我们将在第3章中介绍)在过去称为cv2.KNearest ( ),但是现在称为cv2.ml.KNearest_create ( )。本书为了避免混淆,推荐使用OpenCV 4.0。
这些都很好,但是你现在会想:为什么要学习机器学习呢?机器学习的应用是什么呢?让我们在1.7节回答这个问题。