
本书基于Python 3.8和OpenCV 4.5编写,共8章,包括环境搭建、简易调色画布、几何图像绘制、简单的图像处理、马赛克、图像美颜、人脸检测、人脸跟踪。读者通过学习本书内容及运行相应的仿真程序,可以更加深刻地理解图像处理的内容,并且更加熟练地掌握计算机视觉在不同领域的应用。
计算机视觉技术是在图像处理技术基础上发展起来的一门学科。随着计算机视觉所依赖的硬件设备的不断升级,以及人们在视觉技术领域的需求增多,计算机视觉技术在很多领域发挥着越来越重要的作用。OpenCV是一个开源的计算机视觉库,该库包括各种计算机视觉算法。近年来,OpenCV在图像分割、物体识别、运动跟踪、人脸识别、目标检测、机器视觉、机器人等领域的应用非常广泛。OpenCV所展现出来的丰富内容,是目前开源视觉算法库中非常出色的。 随着人工智能技术的飞速发展,很多高职院校开设了人工智能技术应用等专业,而计算机视觉技术是人工智能技术应用专业的重要课程之一。在这一背景下,编者基于Python 3.8和OpenCV 4.5,面向高职学生和计算机视觉的初学者,编写了本书,内容涵盖了传统图像与视频的常用处理方法,本书案例丰富、语言通俗易懂,适合读者快速入门。 本书的主要目的如下。 ? 为读者学习OpenCV提供一份好的参考资料。 ? 让没有图像处理基础的读者实现轻松的入门。 ? 读者通过项目案例的形式,在学习知识过程中建立项目意识。 ? 读者通过学习具体的案例,能够快速掌握图像处理的相关理论基础和算法。 本书基于Python编程语言,由浅入深、循序渐进地介绍了OpenCV从入门到实践的内容,其内容涵盖OpenCV基础知识、常见的图像操作、图像去噪、图像轮廓的提取与分析,以及人脸识别、目标追踪等计算机视觉的项目案例。作者在介绍具体的算法原理时,尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用过多复杂抽象的公式。 由于本书各章节相互独立,因此读者可以根据自己感兴趣的内容自主地选择学习章节。参与编写本书的教师都具有丰富的计算机视觉课程教学经验,力求通过通俗易懂的方式,使读者在一个个具体项目案例中,将OpenCV的知识融会贯通,轻松愉快地掌握相关内容。为了更好地与教师互动,本书提供了在线课程。读者通过访问“浙江省高等学校在线开放课程共享平台”,并搜索“计算机视觉技术应用(OpenCV)”课程,可以与教师在线交流。读者也可以在学习线上课程的过程中,认识更多计算机视觉的同学或朋友。读者可以通过扫描书中二维码学习在线课程中相关章节的视频资源,线上线下互动,提升读者的学习兴趣。 本书由金华职业技术学院的教师组织编写,由王伟斌、黄日辰担任主编,邱郑宜人、刘日仙、叶继阳担任副主编。具体分工如下,第1章由叶继阳编写,第2章、第3章和第7 章由黄日辰编写,第4章和第8章由邱郑宜人编写,第5章和第6章由王伟斌编写,第9章由刘日仙编写。 在编写本书的过程中,我们除了得到金华职业技术学院的大力支持,还参考了OpenCV官网、CSDN、博客园等网站中计算机视觉相关技术人员分享的技术文档,受益匪浅,在此一并表示衷心的感谢。 为了方便教师教学,本书配有电子教学课件及相关资源,请有此需要的读者登录华信教育资源网(www.hxedu.com.cn),注册后免费下载,如有问题可在网站留言板中留言或与电子工业出版社联系。 由于作者水平有限,书中难免存在一些疏漏和不足之处,希望广大同行专家和读者批评、指正。 编者 2023年1月
第1章 计算机视觉概述 1 1.1 项目介绍 1 1.2 计算机视觉理论知识 2 1.2.1 计算机视觉能解决什么问题 2 1.2.2 计算机视觉与相关领域 3 1.2.3 计算机视觉的发展历史 4 1.2.4 计算机视觉的发展趋势 12 1.3 典型的计算机视觉任务 14 应用场景1:文字识别 20 第2章 环境搭建 22 2.1 项目介绍 22 2.2 环境搭建的理论知识 23 2.3 环境搭建 26 2.3.1 安装Anaconda 26 2.3.2 创建Anaconda 虚拟环境 30 2.3.3 下载PyCharm 32 2.3.4 安装PyCharm 33 2.3.5 使用PyCharm加载Anaconda虚拟环境 35 应用场景2:安防领域 40 第3章 简易调色画布 42 3.1 项目介绍 42 3.2 调色画布理论基础 43 3.2.1 像素 43 3.2.2 像素坐标系 43 3.2.3 RGB颜色模型 44 3.2.4 BGR排列模式 46 3.2.5 滑动条 47 3.2.6 简易调色画布原理 49 3.3 项目实现 50 3.3.1 代码框架 50 3.3.2 代码实现 52 应用场景3:农业领域 55 第4章 几何图像的绘制 57 4.1 项目介绍 57 4.2 理论基础 58 4.2.1 直线 58 4.2.2 矩形 59 4.2.3 圆 59 4.2.4 多边形 60 4.2.5 文本 61 4.3 项目分析 62 4.3.1 项目介绍 62 4.3.2 界面效果 63 4.4 项目实现 63 4.4.1 调用声明 64 4.4.2 定义初始化变量 64 4.4.3 类内方法 64 4.4.4 绘制几何图形 66 4.4.5 系统化编程 68 应用场景4:零售业 71 第5章 简单的图像处理 73 5.1 项目介绍 73 5.2 项目原理 74 5.2.1 图像的翻转处理 74 5.2.2 形态学处理 74 5.3 项目实现 74 5.3.1 使用OpenCV旋转图像 74 5.3.2 使用OpenCV平移图像 78 5.3.3 使用OpenCV镜像图像 80 5.3.4 使用OpenCV翻转图像 82 5.3.5 形态学处理实现 84 应用场景5:生产制造 89 第6章 马赛克 92 6.1 项目介绍 92 6.2 项目原理 93 6.2.1 马赛克效果实现 93 6.2.2 马赛克效果实现原理 93 6.3 项目实现 95 6.3.1 图像马赛克效果实现 95 6.3.2 视频马赛克效果实现 96 6.3.3 马赛克拼图效果实现 97 应用场景6:医疗保健 109 第7章 图像美颜 111 7.1 项目介绍 111 7.2 空域滤波理论基础 112 7.2.1 均值滤波 113 7.2.2 方框滤波 114 7.2.3 高斯滤波 115 7.2.4 中值滤波 117 7.2.5 双边滤波 118 7.3 项目实现 119 7.3.1 代码框架 119 7.3.2 代码实现 120 应用场景7:谷歌翻译 126 第8章 人脸检测 127 8.1 项目介绍 127 8.2 理论基础 128 8.2.1 计算机视觉任务与目标识别算法 128 8.2.2 Haar特征与积分图 131 8.2.3 AdaBoost级联分类器 134 8.2.4 人脸检测 136 8.3 项目分析 138 8.3.1 项目介绍 138 8.3.2 界面效果 139 8.4 项目实现 140 8.4.1 模型配置细节 140 8.4.2 检测算法应用 140 8.4.3 输出检测结果 141 8.4.4 系统化编程 142 8.4.5 输出结果分析 143 应用场景8:人脸识别 147 第9章 人脸跟踪 149 9.1 项目介绍 149 9.2 人脸跟踪原理 150 9.2.1 基于特征匹配的跟踪 150 9.2.2 基于区域匹配的跟踪 151 9.2.3 基于模型匹配的跟踪 151 9.3 基于OpenCV的人脸跟踪实现 153 9.3.1 人脸检测功能的实现 153 9.3.2 检测模式和跟踪模式的切换 155 9.3.3 跟踪器的实现 156 9.3.4 人脸特征点定位实现 158 应用场景9:自动驾驶汽车 162 参考文献 164