前言
计算机视觉是目前最热门的研究领域之一,OpenCV-Python集成了OpenCV C++ API和Python的最佳特性,成为计算机视觉领域内极具影响力和实用性的工具。
近年来,我深耕计算机视觉领域,从事课程研发工作,在该领域,尤其是OpenCV-Python方面积累了一些经验,因此经常会收到与该领域相关的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把积累的知识以图文的形式分享给大家,我对该领域的知识点进行了系统的整理,编写了本书。希望本书的内容能够为大家在计算机视觉方面的学习提供帮助。
本书的主要特点
本书在内容的安排、组织、设计上遵循了如下思路。
1.适合入门
第1部分对计算机视觉的基础知识进行了全面的梳理,主要包括数字图像基础、Python基础、OpenCV基础。重点对计算机视觉中用到的基础理论、算法、图像处理,Python程序设计基础语法,OpenCV核心函数进行了介绍。该部分内容能够帮助没有计算机视觉基础的读者快速入门,也能够帮助有一定计算机视觉基础的读者对核心知识点进行快速梳理。
2.以案例为载体
按照知识点安排的教材的特点在于“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive,MECE),能够保证介绍的知识点“不重叠,不遗漏”。但是,跟着教材学习可能会存在如下问题:“了解了每一个知识点,但在遇到问题时感觉无从下手,不知道该运用哪些知识点来解决当前问题。”
知识点是一个个小石子,解决问题的思路是能够把许多石子串起来的绳子。绳子可以赋予石子更大的意义和价值,解决问题能够让知识点得以运用。
本书通过案例来介绍相关知识点,尽量避免将案例作为一个孤立的问题来看待,而是更多地考虑知识点之间的衔接、组合、应用场景等。例如,本书采用了多种不同的方式来实现手写数字识别,以帮助大家更好地从不同角度理解和分析问题。本书从案例实战的角度展开,将案例作为一根线,把所有知识点串起来,以帮助读者理解知识点间的关系并将它们组合运用,提高读者对知识点的理解和运用能力。
3.轻量级实现
尽量以简单明了的方式实现一个问题,以更好地帮读者搞清问题的核心和算法。用最简化的方式实现最小可用系统(Minimum Viable Product,MVP),用最低的成本和代价快速验证和迭代一个算法,这样更有利于理解问题、解决问题。在成本最低的前提下,利用现有的资源,以最快的速度行动起来才是最关键的。所以,本书尽可能简化每一个案例,尽量将代码控制在100行左右。希望通过这样的设计,让读者更好地关注算法核心。
4.专注算法
抽象可以帮助读者屏蔽无关细节,让读者能够专注于工具的使用,极大地提高工作效率。OpenCV及很多其他库提供的函数都是封装好的,只需要直接把输入传递给函数,函数就能够返回需要的结果。因此,本书没有对函数做过多介绍,而是将重点放在了实现案例所使用的核心算法上。
5.图解
一图胜千言。在描述关系、流程等一些相对比较复杂的知识点时,单纯使用语言描述,读者一时可能会难以理解。在面对复杂的知识点时,有经验的学习者会根据已有知识点绘制一幅与该知识点有关的图,从而进一步理解该知识点。因为图像能够更加清晰、直观、细致地将知识点的全局、结构、关系、流程、脉络等信息体现出来。本书配有大量精心制作的图表,希望能够更好地帮助读者理解相关知识点。
6.案例全面
本书涉及的40余个案例都是相关领域中比较典型的,涵盖了计算机视觉领域的核心应用和关键知识点。案例主要包括四个方面。
基础部分:图像安全(图像加密、图像关键部位打码、隐身术)、图像识别(答题卡识别、手势识别、车牌识别、指纹识别、手写数字识别)、物体计数、图像检索、缺陷检测等。
机器学习:KNN实现字符(手写数字、英文字母)识别、数独图像求解(KNN)、SVM手写数字识别、行人检测、艺术画(K均值聚类)等。
深度学习:图像分类、目标检测(YOLO算法、SSD算法)、语义分割、实例分割、风格迁移、姿势识别等。
人脸识别相关:人脸检测、人脸识别、勾勒五官轮廓、人脸对齐、表情识别、驾驶员疲劳检测、易容术、性别和年龄识别等。
感谢
首先,感谢我的导师高铁杠教授,感谢高教授带我走进了计算机视觉这一领域,以及一直以来给我的帮助。
感谢OpenCV开源库的所有贡献者让OpenCV变得更好,让计算机视觉领域更加精彩。
感谢本书的责任编辑符隆美老师,她积极促成本书的出版,修正了书中的技术性错误,并对本书内容进行了润色。感谢本书的封面设计老师为本书设计了精美的封面。感谢为本书出版而付出辛苦工作的每一位老师。
感谢合作单位天津拨云咨询服务有限公司为本书提供资源支持。
本书出版受天津职业技术师范大学教材支持项目(项目编号:XJJW1970)支持。
感谢家人的爱,我爱你们。
互动方式
限于本人水平,书中存在很多不足之处,欢迎大家提出宝贵的意见和建议,也非常欢迎大家跟我交流关于OpenCV的各种问题,我的邮箱是lilizong@gmail.com。
另外,大家也可以关注我的微信公众号“计算机视觉之光”(微信号cvlight)获取关于本书的配套资源。
李立宗
2022年5月27日于天津