OpenCV项目开发实战(原书第2版)(txt+pdf+epub+mobi电子书下载)

作者:(美)约瑟夫·豪斯(Joseph Howse)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

OpenCV项目开发实战(原书第2版)

OpenCV项目开发实战(原书第2版)试读:

前言

计算机视觉系统的应用越来越广泛:在北冰洋部署了计算机视觉系统,以便在夜间发现冰山;各种飞行器上应用了计算机视觉系统,它们飞过亚马孙热带雨林,绘制火灾、破坏雨林和非法伐木的航拍图;世界各地的港口和机场设立了计算机视觉系统,以扫描嫌疑人和违禁品;计算机视觉系统也被应用到马里亚纳海沟以引导自主潜艇;将计算机视觉系统应用于手术室,帮助外科医生可视化手术过程并监控病人的当前状况;将计算机视觉系统作为热寻防空火箭的转向系统从战场上发射。类似的应用不胜枚举。

我们可能很少(或从未)去过这些地方。然而,故事往往鼓励我们想象极端的环境和一个人在这些无情的条件下对工具的依赖。这让我想到了当代影视作品中最受欢迎的人物之一,他是一个普通的男人(英俊,但不太帅;聪明,但不过于聪明),穿着西装,为英国政府工作,总是选择同样的饮料、同样类型的女人,用同样的语调传递双关语,带着一些奇特的科技武器,被派去从事危险的工作。他就是007系列电影的主人公:詹姆斯·邦德。

这本书讨论了非常有用的技术和技巧,并从特工小说中获得灵感。邦德系列电影在侦查、伪装、智能设备、图像拍摄,有时甚至是在计算机视觉方面都有丰富的创意。凭借想象力,再加上努力学习新[1]技能,我们可以和邦德的工程师Q一较高下!本书目标读者

本书是为那些想让计算机视觉成为他们生活中实用而有趣的一部分的技术人员而编写的。你应该熟悉2D图形概念、面向对象语言、GUI、网络和命令行。本书假设你没有任何特定库或平台的经验,书中涵盖了从设置开发环境到部署完成应用程序的所有内容。

学习多种技术和技巧,然后将其集成起来的愿望是非常有益的!本书将帮助你理解与计算机视觉相关的几种类型的系统和应用领域,并帮助你将一些方法应用于检测、识别、跟踪和增强人脸、物体及运动。本书内容

第1章帮助我们在Windows、macOS或Linux系统上安装OpenCV、Python开发环境和Android开发环境。在该章中,我们还在Windows或macOS上安装Unity开发环境。

第2章帮助我们根据配色方案对房地产图像进行分类。我们是在豪宅外,还是在豪宅内?在该章中,我们将在搜索引擎中使用分类器来标记图像结果。

第3章帮助我们检测和识别人脸与猫脸,作为控制警报的一种手[2]段。Ernst Stavro Blofeld带着他的蓝眼睛安格拉猫回来了吗?

第4章帮助我们检测运动并识别动作,将其作为控制智能手机上猜谜游戏的一种手段。手机知道邦德为什么点头,即使其他人都不知道。

第5章帮助我们检测汽车头灯,对其颜色进行分类,估计与它的距离,并为驾驶员提供反馈。那辆车是在跟踪我们吗?

第6章帮助我们在纸上画一个迷宫中的球,并将其看成是智能手机上的一个物理模拟。物理和时间是一切!

第7章帮助我们放大实时视频中的运动,使人的心跳和呼吸变得清晰可见。

第8章帮助我们改进前一章的项目,采用专业相机进行高速、红外线或紫外线成像。超越人类视觉的极限!

附录A帮助我们解决在某些树莓派环境中影响wxPython GUI库的兼容性问题。

附录B帮助我们发现OpenCV的除本书项目中使用的功能之外的更多特征检测功能。

附录C帮助我们学习在Python环境中运行Python代码以及测试OpenCV的安装。最佳配置

本书支持多种操作系统作为开发环境,包括Windows 7 SP 1或更高版本、macOS X 10.7(Lion)或更高版本、Debian Jessie、Raspbian、Ubuntu 14.04或更高版本、Linux Mint 17或更高版本、Fedora 28或更高版本、Red Hat Enterprise Linux(RHEL)8或更高版本、CentOS 8或更高版本、openSUSE Leap 42.3、openSUSE Leap 15.0或更高版本,以及openSUSE Tumbleweed。

本书包含6个项目,需求如下:

·这6个项目中有4个项目是在Windows、macOS或Linux上运行的,需要一个网络摄像头。这些项目可以选择使用树莓派或其他运行Linux的单板计算机。

·一个项目在Android 5.0(Lollipop)或更高版本上运行,需要一个前置摄像头(大多数Android设备都有)。

·一个项目在Android 4.1(Jelly Bean)或更高版本上运行,需要一个后置摄像头和重力传感器(大多数Android设备都有)。为了进行开发,需要一台Windows或macOS机器和价值约95美元的游戏开发软件。

有关所有需求库和工具的安装说明,以及树莓派的可选设置说明都将在本书介绍。下载示例代码及彩色图像

本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

本书的代码包也在https://github.com/PacktPublishing/OpenCV-4-for-Secret-Agents-Second-Edition的GitHub上托管。如果代码有更新,将在现有的GitHub库上进行更新。[1] Q,007电影系列主人公的搭档,专门为邦德提供各种高科技武器。——编辑注[2] 邦德的宿敌。——编辑注作者简介

约瑟夫·豪斯(Joseph Howse)和四只猫住在加拿大的一个渔村。一般的猫喜欢吃鱼,可是这四只猫却更喜欢吃鸡肉。

约瑟夫通过他的公司Nummist Media提供计算机视觉专业知识。他的著作包括Packt出版的OpenCV 4 for Secret Agents、OpenCV 3 Blueprints、Android Application Programming with OpenCV 3、iOS Application Development with OpenCV 3、Learning OpenCV 3 Computer Vision with Python,以及Python Game Programming by Example。

我要感谢读者——犹他州法明顿的丹和辛迪·戴维斯,他们分享了对本书第1版的热心,并告诉我他们在计算机视觉领域的冒险经历。感谢这两版书的编辑、技术评论员和营销人员,以及我在Market Beat(萨尔瓦多)和通用汽车公司的同事们,他们对草稿提供了反馈。最重要的是,我要把本书献给我的家人,是他们的支持让本书成功出版。审校者简介

Christian Stehno,2000年毕业于德国的奥尔登堡大学,主修计算机科学。毕业后,他在计算机科学的不同领域工作,先是在一家学术机构从事理论计算机科学的研究,后来在一家研究所转向嵌入式系统设计。2010年,他创办了自己的公司CoSynth,开发用于工业自动化的嵌入式系统和智能相机。此外,他是Irrlicht 3D引擎开发团队的一名长期成员。

Arun Ponnusamy是印度一家人工智能初创公司的计算机视觉研究工程师。他是一名终身学习者,热衷于图像处理、计算机视觉和机器学习,毕业于哥印拜陀的PSG技术学院,主修工程学。他的职业生涯始于MulticoreWare公司,在那里他在图像处理、OpenCV、软件优化和GPU计算上投入了大量的时间。

Arun对计算机视觉概念有清晰的理解,这让他能够在博客和会议上以直观的方式解释计算机视觉概念。他为计算机视觉创建了一个简洁而用户友好的开源Python库,名为cvlib。目前,他致力于物体检测、行为识别和生成网络的研究。译者简介

刘冰,博士毕业于重庆大学,重庆邮电大学计算机科学与技术学院/人工智能学院教师,先后发表SCI/EI学术论文4篇,翻译出版程序设计、图像处理、计算机视觉等领域译著4部,编写教材5部,申请发明专利3项,参与主研国家级、省部级项目3项。荣获重庆邮电大学优秀班主任、优秀班导师、优秀青年教师等荣誉称号。第一部分 概述

建立一个多平台开发环境。将OpenCV与其他库进行集成,创建一个应用程序对Web图像进行分类。

这一部分包含前两章。第1章 任务准备“工程师Q:先生,我多年来一直在说,我们的专用设备太陈旧了。现在,计算机分析展现出一种全新的方法:微型化。”——《女王密使》(1969)

詹姆士·邦德不是一个普通的人。他乘潜水艇巡游,系着一条火箭皮带。他滑得实在是太好了!他总是有最新的东西,哪怕身陷窘境也毫无畏惧,这让工程师Q非常沮丧。

作为21世纪10年代的软件开发人员,我们目睹了各种新平台的爆炸式发展。在普通家庭应用中,我们可能会发现Windows、Mac、iOS和Android设备的身影。父母在用不同的平台办公。孩子有三个或五个游戏机(如果算上移动版本的话)。连刚学走路的幼儿也有跳蛙学习机。智能眼镜越来越便宜。

我们必须敢于尝试新的平台,并考虑用新方法来整合这些平台。毕竟,我们的用户是这样做的。

本书包含多平台开发,提供了一些奇异怪诞而又非常棒的应用程序,这些应用程序可以在意想不到的设备上进行部署。本书用到了各种计算机传感器,尤其是计算机视觉,这将我们身边那些普通的、混杂凌乱的设备赋予了新的生命。

在情报员007开始疯狂使用这些小工具之前,他有义务听一下Q的汇报。本章将扮演Q的角色,谈谈安装。

在本章结束时,你将获得用Python开发适用于Windows、Mac或Linux的OpenCV应用程序,以及用Java开发适用于Android的OpenCV应用程序的全部工具。你还将为成为树莓派单板计算机的新用户引以为傲(这个附加硬件是可选的)。你还将了解一些有关Unity(这是一个可以集成到OpenCV中的游戏引擎)的内容。具体来说,本章将介绍以下几种开发环境的安装方法:

·在Windows上安装Python和OpenCV。这包括可以选择用CMake和Visual Studio从源代码中配置和编译OpenCV。

·在Mac上安装Python和OpenCV。这包括使用MacPorts或Homebrew作为一个包管理器。

·在Debian Jessie上或在诸如Raspbian、Ubuntu或Linux Mint之类的其衍生平台上安装Python和OpenCV。这包括高级包管理器(Advanced Package Tool,APT)的使用。另外,还包括用CMake和GCC从源代码中配置和编译OpenCV。

·在Fedora上或在其中一个衍生平台(如红帽企业Linux(Rad Hat Enterprise Linux,RHEL)或CentOS)上安装Python和OpenCV。这包括yum包管理器的使用。

·在openSUSE上安装Python和OpenCV。这包括yum包管理器的使用。

·在Windows、Mac或Linux上安装Android Studio和OpenCV的Android库。

·在Windows或Mac上安装Unity和OpenCV。

·树莓派的安装。

如果你发现自己对本章的内容有一丝胆怯的话,那么请你放心,并不是所有的工具都是必需的,也没有一个项目会同时用到所有这些工具。尽管工程师Q和我都期待一次设置多个工具的重大事件,可是你却可以略读这一章,仅在我们的项目中需要某个工具时再回来逐个地了解这些内容。1.1 技术需求

本章为“安装”章节。开始阅读本章时无须特别的先验知识。我们将跟随进度安装好所有工具。

在附录C中介绍了运行Python代码的基本说明。我们在Python环境中安装好OpenCV以后,你可能需要参阅该附录来了解如何对环境进行最小化测试。1.2 安装开发机

我们可以在台式机、笔记本电脑、甚或简陋的树莓派上开发OpenCV应用程序(参见1.5节)。我们开发的大多数应用程序占用的内存都不会超过128兆字节,因此它们仍然可以在老旧电脑或是低性能机器上运行(尽管速度缓慢)。为了省时,最好先在最快的机器上开发,然后再在那些较慢机器上进行测试。

本书假设在你的开发机器上已安装了下列操作系统之一:

·Windows 7 SP 1或更高版本

·Mac OS 10.7(Lion)或更高版本

·Debian Jessie或更高版本,或下列衍生版本:

·Raspbian 2015-09-25或更高版本

·Ubuntu 14.04或更高版本

·Linux Mint 17或更高版本

·Fedora 28或更高版本,或下列衍生版本:

·RHEL 8或更高版本

·CentOS 8或更高版本

·openSUSE Leap 42.3、openSUSE Leap 15.0或更高版本,openSUSE Tumbleweed或衍生版本。

其他类Unix系统也能够工作,但不在本书讨论范围之内。

你要准备一个USB网络摄像头及其必要的驱动程序。大多数网络摄像头都提供了在Windows和Mac上安装驱动程序的说明。通常,Linux发行版包括USB视频类(USB Video Class,UVC)Linux驱动程序,在http://www.ideasonboard.org/uvc/#devices中列出了它支持的许多网络摄像头。

我们将安装下列组件:

·在Mac上,第三方包管理器将帮助我们安装库及这些库的依赖项。我们将使用MacPorts或Homebrew。

·Python开发环境——在本书编写期间,OpenCV支持Python 2.7、3.4、3.5、3.6和3.7版本。本书中的Python代码支持所有这些版本。作为Python开发环境的一部分,我们将使用Python包管理器pip。

·流行的Python库,例如NumPy(用于数值函数)、SciPy(用于数值和科学函数)、Requests(用于Web请求)、wxPython(用于跨平台的图形用户接口GUI)。

·PyInstaller,一种跨平台的工具,用于将Python脚本、库和数据打包成可分发的应用程序,这样用户机就无须安装Python、OpenCV和其他的库了。就本书而言,创建可再分发的Python项目是一个可选的主题。我们将在第2章中介绍基础知识,但你需要自行测试和调试,因为PyInstaller(与其他Python打包工具类似)在不同操作系统、Python版本和库版本中所展示出的行为并不完全一致。PyInstaller不能很好地支持树莓派或其他ARM设备。

·我们还可以选择使用C++开发环境从而从源代码编译OpenCV。在Windows上,我们使用Visual Studio 2015或后续版本。在Mac上,我们使用Xcode。在Linux上,我们使用标准GCC编译器。

·Python支持OpenCV和opencv_contrib(一组额外的OpenCV模块)的编译,并对某些桌面硬件进行优化。在编写本书时,OpenCV 4.0.x是最新的稳定版本,我们的指令是为该版本量身定制的。但是,总的来说,本书中的代码也适用于之前的稳定版本OpenCV 3.4.x,对于那些喜欢预先打包编译的用户来说,OpenCV 3.4.x是更广泛使用的一个版本。

·OpenCV的另一个版本支持Java,并对某些Android硬件进行优化。在编写本书时,OpenCV 4.0.1是最新的发布版本。

·Android开发环境包括Android Studio和Android SDK。

·在64位Windows或Mac上,一个名为Unity的三维游戏引擎。Android Studio占用很大的内存,即使你希望用树莓派来开发桌面应用程序或Pi应用程序,但是开发Android应用程序仍需要使用更多的内存。

对于Python和OpenCV环境,让我们将安装过程分解为三组平台相关的步骤,对于Android Studio和OpenCV环境加上一组与平台无关的步骤,对于Unity和OpenCV环境再加上另一组与平台无关的步骤。1.2.1 在Windows上安装Python和OpenCV

在Windows上,我们可以选择安装32位开发环境(使应用程序同时兼容32位或64位Windows)或64位开发环境(使优化后的应用程序只兼容64位Windows)。OpenCV适用于32位和64位版本。

我们还可以选择使用二进制安装程序,或从源代码编译OpenCV。对于本书中的Windows应用程序而言,二进制安装程序足以满足我们的一切需求。但是,我们还讨论了从源代码进行编译的安装选项,因为这种方法可以让我们能够对其他属性(这些属性可能与你未来的工作有关或与其他书中的项目相关)进行配置。

不管如何获取OpenCV,我们都需要一个通用的Python开发环境。我们将使用一个二进制安装程序来安装这个环境。从http://www.python.org/getit/可以获得Python安装程序。下载并运行Python 3.7的最新修订版本(32位版本或64位版本)。

默认情况下,要使用新安装的Python 3.7运行Python脚本,让我们来编辑一下系统的Path变量并添加;C:\Python3.7(假设你的Python 3.7安装在默认位置)。删除之前的所有Python路径,例如;C:\Python2.7。注销并重新登录(或重新启动)。

Python自带一个名为pip的包管理器,它简化了安装Python模块及其依赖项的任务。打开命令行窗口输入并运行以下命令来安装numpy、scipy、requests、wxPython和pyinstaller:

现在,我们有一个选择,我们可以将OpenCV和opencv_contrib的二进制文件作为一个预编译的Python模块安装,我们也可以从源代码编译这个模块。要安装一个预编译模块,只需要运行如下命令:

或者,要从源代码编译OpenCV和opencv_contrib,可以按照“在Windows上用CMake和Visual Studio编译OpenCV”一节中的说明进行操作。

无论是安装预编译的OpenCV和opencv_contrib模块,还是从源代码编译OpenCV和opencv_contrib模块,我们都拥有了为Windows开发OpenCV应用程序所需的一切。如果要开发Android应用程序,我们还需要按照1.3节所述内容来安装Andorid Studio。

在Windows上用CMake和Visual Studio编译OpenCV

要从源码编译OpenCV,我们需要一个通用的C++开发环境。我们使用Visual Studio 2015或更高版本作为C++开发环境。可以使用你购买的任意一个安装媒介,或访问https://visualstudio.microsoft.com/downloads/,下载并运行下列安装程序之一:

·Visual Studio Community 2017,是免费的。

·Visual Studio 2017付费版,有30天的免费试用期。

如果安装程序列出了可选的C++组件,我们应该选择安装所有选项。安装程序运行完成后,重新启动。

OpenCV使用了一组必须安装的名为CMake的编译工具。或者,我们可以选择安装一些第三方库来启用OpenCV中的额外功能。作为一个例子,让我们来安装Intel线程构建块(Thread Building Block,TBB),OpenCV可以利用TBB来优化多核CPU的一些功能。安装了TBB之后,我们将配置和编译OpenCV。最后,我们将确保我们的C++和Python环境能够找到我们编译的OpenCV。

下面是详细的步骤:

1)从https://cmake.org/download/下载并安装CMake的最新稳定版本。需要CMake 3或最新版本。即使我们使用的是64位库和编译器,32位CMake也是兼容的。当安装程序询问更新PATH变量时,请选择“Add CMake to the system PATH for all users”或“Add CMake to the system PATH for current user”。

2)如果你的系统使用代理服务器访问网络,请定义两个环境变量:HTTP_PROXY和HTTPS_PROXY,这两个环境变量的值等于代理服务器的URL,如http://myproxy.com:8080。这就确保CMake可以使用代理服务器下载OpenCV的一些附加依赖。(如果你不确定,请不要定义这些环境变量。你可能没有使用代理服务器。)

3)从http://opencv.org/releases.html下载OpenCV Win包(选择最新版本)。下载的文件可能有一个.exe扩展名,但这实际上是一个自解压的ZIP文件。双击该文件,在出现提示时输入任意一个目标文件夹,我们将其命名为,将创建一个子文件夹/opencv。

4)从https://github.com/opencv/opencv_contrib/releases下载opence_contrib的ZIP包(选择最新版本)。将其解压到任意一个目标文件夹,并将其命名为

5)从https://www.threadingbuildingblocks.org/download下载TBB的最新稳定版本。它同时包含了32位和64位二进制文件。将其解压到任意一个目标文件夹中,并将其命名为

6)打开命令提示符。创建一个文件夹来保存我们的编译:

将目录更改为新创建的编译文件夹:

7)安装好依赖项之后,就可以配置OpenCV的编译系统了。要理解所有的配置选项,我们可以阅读/opencv/sources/CMakeLists.txt中的代码。但是,作为一个例子,我们将只使用包含Python绑定和通过TBB进行多处理的一个发行版编译的选项。

·要为Visual Studio 2017创建一个32位的项目,请运行以下命令(用实际路径替换尖括号中的内容)

·或者,要为Visual Studio 2017创建一个64位的项目,请运行以下命令(用实际路径替换尖括号中的内容)

·CMake将生成它是否找到依赖项的一个报告。OpenCV有很多可选的依赖项,所以不必担心缺少依赖项。但是,如果编译没有成功完成,请尝试安装这些缺少的依赖项(很多都可以作为预编译的二进制文件使用)。然后,重复该步骤。

8)现在我们的编译系统已配置好了,我们可以编译OpenCV了。在Visual Studio中打开/OpenCV.sln。选择“Release”配置并构建解决方案。(如果你选择了“Release”以外的其他编译配置,则可能会出现错误,因为大多数Python安装都不包含调试库)。

9)我们应该确保我们的Python安装不包括其他版本的OpenCV。在Python DLL文件夹和Python site-packages文件夹中查找并删除所有OpenCV文件。例如,这些文件的路径可能与C:\Python37\DLLs\opencv_*.dll,C:\Python37\Lib\sitepackages\opencv和C:\Python37\Lib\sitepackages\cv2.pyd模式匹配。

10)最后,我们需要将OpenCV安装到Python和其他进程可以找到的一个位置。为此,右键单击OpenCV解决方案的“INSTALL”项目(位于Visual Studio的“Solution Explorer”面板)并对其进行编译。当这个编译完成后,退出Visual Studio。编辑系统的Path变量并添加;\install\x86\vc15\bin(32位编译)或;\install\x64\vc15\bin(64位编译),这正是OpenCV DLL文件所在的位置。同样,添加;\lib\ia32\vc14(32位)或;\lib\intel64\vc14(64位),这是TBB DLL文件所在的位置。注销并重新登录(或重新启动)。OpenCV的Python模块位于诸如C:\Python37\Lib\site-packages\cv2.pyd之类的路径上。Python可以找到路径所在的位置,因此你不需要再执行任何步骤。如果你使用的是Visual Studio 2015,那么请用vs2015替换vs2017,用Visual Studio 14 2015替换Visual Studio 15 2017,用vc14替换vc15。但是要注意,对TBB而言,名为vc14的文件夹包含适用于Visual Studio 2015和Visual Studio 2017的DLL文件。

你或许想要查看/opencv/sources/samples/python中的代码示例。

此刻,我们已经准备好了为Windows开发OpenCV应用程序的所有内容。如果还要开发Android应用程序,我们需要安装Android Studio,请参阅1.3节的内容。1.2.2 在Mac上安装Python和OpenCV

Mac已经预先安装了Python。但是,Apple公司已经根据系统的内部需求对预先安装的Python进行了定制。通常,在Apple的Python上我们不应该安装任何库。如果我们安装了库,库很可能会在系统更新时中断,甚至更糟的是,我们安装的这些库很可能与系统所需要的预装库发生冲突。相反,我们应该安装标准的Python 3.7,然后在其上安装我们所需要的库。

对于Mac,有多种获取标准Python 3.7及其Python兼容库的方法,例如OpenCV。最终,所有这些方法都需要使用Xcode developer工具从源代码编译某些组件。但是,根据我们选择的方法,编译这些组件的任务是由第三方工具以各种方式自动完成的。

首先,让我们设置Xcode和Xcode命令行工具,这些工具为我们提供了一个完整的C++开发环境:

1)从Mac应用程序商店或https://developer.apple.com/xcode/下载并安装Xcode。如果安装程序提供了安装命令行工具的一个选项,那么选中它。

2)打开Xcode,如果出现许可协议,则选择接受。

3)如果还没有安装命令行工具,现在就必须安装这些命令行工具。转到“Xcode|Preferences|Downloads”,单击命令行工具旁边的“Install”按钮。等待安装完成。然后退出Xcode。或者,如果你在Xcode中没有找到安装命令行工具的选项,那么打开终端并运行以下命令:

现在,我们将研究使用MacPorts或Homebrew实现自动编译的方法。这两个工具都是包管理器,它们帮助我们解决依赖问题,并将开发库与系统库进行分离。

通常,我推荐MacPorts。与Homebrew相比,MacPorts为OpenCV提供了更多的修补程序和配置选项。另外,Homebrew为OpenCV提供了更及时的更新。在编写本书时,Homebrew为OpenCV 4.0.1提供了一个软件包,但MacPorts还停留在OpenCV 3.4.3版本。Homebrew和MacPorts都可以与Python包管理器pip共存,尽管MacPorts还没有打包这个版本,但是我们仍可以使用pip来获得OpenCV 4.0.1。通常,不应该在同一台机器上安装MacPorts和Homebrew。对于Mac,我们的安装方法并没有给出OpenCV的示例项目。要获取这些示例,可从https://opencv.org/releases.html下载最新的源代码包,并解压到任意位置。在/samples/python中找到示例。

现在,可以根据你的个人喜好,开始选择性阅读1.2.2.1节或1.2.2.2节的内容。

1.2.2.1 Mac上的MacPorts

MacPorts提供自动下载、编译和安装各种开源软件(Open Source Software,OSS)的终端命令。MacPorts还根据需要安装这些依赖项。在一个名为Portfile的配置文件中定义了软件的每个部分、依赖项和编译方法。因此,一个MacPorts库就是一个Portfiles集合。

让我们从一个已安装了Xcode及其命令行工具的系统开始吧!下列步骤将通过MacPorts为我们提供一个OpenCV的安装方法。

1)从http://www.macports.org/install.php下载并安装MacPorts。

2)打开终端,并运行以下命令来更新MacPorts:

在出现提示时,输入你的密码。

3)运行以下命令,安装Python3.7、pip、NumPy、SciPy和Requests:

4)Python安装的可执行文件名为python 3.7。要将默认的Python可执行文件链接到Python3.7,并将默认的pip可执行文件链接到这个Python pip安装,让我们来运行以下命令:

5)在编写本书时,MacPorts只有wxPython和PyInstaller相对较低版本的包。让我们使用下面的pip命令安装最新的版本吧:

6)要检查MacPorts是否有一个OpenCV 4包,运行$port list opencv。在编写本书时,会输出下列信息:

·这里,@3.4.3表示OpenCV 3.4.3是MacPorts的最新可用包。但是,如果你的输出显示的是@4.0.0或更新的版本,那么你就可以用MacPorts配置、编译和安装OpenCV 4,运行如下命令:

·通过在命令中添加+avx2+contrib+opencl+python37,我们指定希望opencv变体(编译配置)具有AVX2 CPU优化、open_contrib附加模块、OpenCL GPU优化和Python3.7绑定。要在安装前查看可用变体的完整列表,可以输入以下内容:

·根据我们的自定义需求,我们可以将其他变体添加到install命令。

·另一方面,如果$port list opencv的输出显示MacPorts还没有OpenCV 4包,我们可以用pip代替安装OpenCV 4和opencv_contrib附加模块,运行下列命令:

现在,我们已经拥有了为Mac开发OpenCV应用程序所需的一切内容。同样,要为Android开发应用程序,我们需要安装Android Studio,我们将会在1.3节中介绍Android Studio。

1.2.2.2 Mac上的Homebrew

与MacPorts类似,Homebrew也是一个包管理器,提供终端命令自动下载、编译和安装各种开源软件。

下面我就从一个已经安装了Xcode及其命令行工具的系统开始,下列步骤将为我们提供一个通过Homebrew安装OpenCV的方法:

1)打开终端,运行如下命令,安装Homebrew:

2)与MacPorts不同的是,Homebrew不会自动将其可执行文件放入PATH中。为此,创建或编辑~/.profile文件,并在首行添加下列内容:

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

·注意,现在Homebrew安装的可执行文件比系统安装的可执行文件具有更高的优先权。

3)查看Homebrew的自检报告,运行以下命令:

遵照给出的所有故障排除建议。

4)现在,更新Homebrew:

5)运行以下命令,安装Python 3.7:

6)现在,我们可以使用Homebrew安装OpenCV以及包括NumPy在内的依赖项了。运行如下命令:

7)同样的,运行如下命令安装SciPy:

8)在编写本书时,Homebrew还没有requests包和pyinstaller包,并且它的wxPython包也是一个相对较低的版本,因此我们将使用pip来安装这些模块。运行以下命令:

现在,我们已经具备为Mac开发OpenCV应用程序所需的一切内容。同样,要开发Android应用程序,我们需要安装Tegra Android开发包(Tegra Android Development Pack,TADP),我们会在后文中介绍。1.2.3 在Debian Jessie及其衍生系统(包括Raspbian、Ubuntu和Linux Mint)上安装Python和OpenCV有关安装Raspbian操作系统的相关内容,可参阅1.5节。

在Debian Jessie、Raspbian、Ubuntu、Linux Mint及其衍生系统上,Python事先安装好的可执行文件是Python 2.7。我们可以使用系统包管理器apt安装标准库中的NumPy、SciPy和Request。要更新apt包索引并安装这些包,请在终端下运行以下命令:

标准库中wxPython包的最新版各不相同,这取决于具体的操作系统。在Ubuntu 14.04及其衍生版本(包括Linux Mint 17)上,包的最新版本是wxPython 2.8。运行以下命令进行安装:

在Ubuntu 18.04及其更高版本,以及Linux Mint 19等衍生系统上,包的最新版本是wxPython 4.0。运行如下命令进行安装:

在Debian Jessie系列的大多数其他系统上,wxPython 3.0是包的最新版本。运行如下命令进行安装:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?