具体描述
《OpenCV轻松入门:面向Python》基于面向Python 的OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以OpenCV官方文档的知识脉络为主线,并对细节进行补充和说明。
书中不仅介绍了OpenCV 函数的使用方法,还介绍了函数实现的算法原理。在介绍OpenCV 函数的使用方法时,提供了大量的程序示例。而且在介绍函数对图像的处理前,往往先展示函数对数值、数组的处理,方便读者从数值的角度观察和理解函数的处理过程和结果。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用过多复杂抽象的公式。
《OpenCV轻松入门:面向Python》适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
作者简介
李立宗
南开大学硕士,天津职业技术师范大学副教授,从事计算机视觉领域的教学和科研工作。拥有发明专利一项、软件著作权十余项,公开发表论文十余篇,主编《OpenCV编程案例详解》等多部图书。在网易云课堂主讲的《OpenCV图穷匕见》等多门课程被评为精品课。
此外,神策数据联合创始人兼CTO曹犟,神策数据联合创始人兼首席架构师付力力,神策数据资深算法工程师邹雨晗,神策数据架构师房东雨,神策数据算法工程师韩越,神策数据数据分析总监陈新祥,神策数据用户行为洞察研究院负责人张乔,以及神策数据分析师高娜、薛创宇、李金霞、朱静芸均参与了此书的写作。
目录信息
1.1 如何使用 1
1.2 图像处理基本操作 3
1.2.1 读取图像 3
1.2.2 显示图像 5
1.2.3 保存图像 9
1.3 OpenCV贡献库 10
第2章 图像处理基础 11
2.1 图像的基本表示方法 11
2.2 像素处理 15
2.3 使用numpy.array访问像素 23
2.4 感兴趣区域(ROI) 29
2.5 通道操作 32
2.5.1 通道拆分 32
2.5.2 通道合并 34
2.6 获取图像属性 36
第3章 图像运算 37
3.1 图像加法运算 37
3.1.1 加号运算符 37
3.1.2 cv2.add()函数 38
3.2 图像加权和 40
3.3 按位逻辑运算 43
3.3.1 按位与运算 43
3.3.2 按位或运算 46
3.3.3 按位非运算 47
3.3.4 按位异或运算 48
3.4 掩模 49
3.5 图像与数值的运算 52
3.6 位平面分解 53
3.7 图像加密和解密 59
3.8 数字水印 63
3.8.1 原理 64
3.8.2 实现方法 66
3.8.3 例题 73
3.9 脸部打码及解码 74
第4章 色彩空间类型转换 77
4.1 色彩空间基础 77
4.1.1 GRAY色彩空间 77
4.1.2 XYZ色彩空间 78
4.1.3 YCrCb色彩空间 78
4.1.4 HSV色彩空间 79
4.1.5 HLS色彩空间 80
4.1.6 CIEL*a*b*色彩空间 80
4.1.7 CIEL*u*v*色彩空间 81
4.1.8 Bayer色彩空间 82
4.2 类型转换函数 82
4.3 类型转换实例 88
4.3.1 通过数组观察转换效果 88
4.3.2 图像处理实例 92
4.4 HSV色彩空间讨论 93
4.4.1 基础知识 93
4.4.2 获取指定颜色 95
4.4.3 标记指定颜色 96
4.4.4 标记肤色 100
4.4.5 实现艺术效果 101
4.5 alpha通道 102
第5章 几何变换 106
5.1 缩放 106
5.2 翻转 110
5.3 仿射 111
5.3.1 平移 112
5.3.2 旋转 113
5.3.3 更复杂的仿射变换 114
5.4 透视 115
5.5 重映射 117
5.5.1 映射参数的理解 117
5.5.2 复制 119
5.5.3 绕x轴翻转 121
5.5.4 绕y轴翻转 122
5.5.5 绕x轴、y轴翻转 124
5.5.6 x轴、y轴互换 126
5.5.7 图像缩放 128
第6章 阈值处理 130
6.1 threshold函数 130
6.1.1 二值化阈值处理(cv2.THRESH_BINARY) 131
6.1.2 反二值化阈值处理(cv2.THRESH_BINARY_INV) 133
6.1.3 截断阈值化处理(cv2.THRESH_TRUNC) 135
6.1.4 超阈值零处理(cv2.THRESH_TOZERO_INV) 136
6.1.5 低阈值零处理(cv2.THRESH_TOZERO) 138
6.2 自适应阈值处理 139
6.3 Otsu处理 141
第7章 图像平滑处理 144
7.1 均值滤波 146
7.1.1 基本原理 146
7.1.2 函数语法 150
7.1.3 程序示例 150
7.2 方框滤波 152
7.2.1 基本原理 152
7.2.2 函数语法 153
7.2.3 程序示例 154
7.3 高斯滤波 156
7.3.1 基本原理 156
7.3.2 函数语法 158
7.3.3 程序示例 159
7.4 中值滤波 159
7.4.1 基本原理 160
7.4.2 函数语法 161
7.4.3 程序示例 161
7.5 双边滤波 162
7.5.1 基本原理 162
7.5.2 函数语法 164
7.5.3 程序示例 164
7.6 2D卷积 166
第8章 形态学操作 168
8.1 腐蚀 168
8.2 膨胀 173
8.3 通用形态学函数 178
8.4 开运算 179
8.5 闭运算 180
8.6 形态学梯度运算 182
8.7 礼帽运算 183
8.8 黑帽运算 185
8.9 核函数 186
第9章 图像梯度 189
9.1 Sobel理论基础 189
9.2 Sobel算子及函数使用 191
9.2.1 参数ddepth 192
9.2.2 方向 195
9.2.3 实例 196
9.3 Scharr算子及函数使用 200
9.4 Sobel算子和Scharr算子的比较 204
9.5 Laplacian算子及函数使用 206
9.6 算子总结 208
第10章 CANNY边缘检测 209
10.1 Canny边缘检测基础 209
10.2 Canny函数及使用 213
第11章 图像金字塔 215
11.1 理论基础 215
11.2 pyrDown函数及使用 217
11.3 pyrUp函数及使用 219
11.4 采样可逆性的研究 220
11.5 拉普拉斯金字塔 223
11.5.1 定义 223
11.5.2 应用 225
第12章 图像轮廓 229
12.1 查找并绘制轮廓 229
12.1.1 查找图像轮廓:findContours函数 229
12.1.2 绘制图像轮廓:drawContours函数 237
12.1.3 轮廓实例 238
12.2 矩特征 240
12.2.1 矩的计算:moments函数 241
12.2.2 计算轮廓的面积:contourArea函数 243
12.2.3 计算轮廓的长度:arcLength函数 246
12.3 Hu矩 248
12.3.1 Hu矩函数 248
12.3.2 形状匹配 252
12.4 轮廓拟合 254
12.4.1 矩形包围框 254
12.4.2 最小包围矩形框 257
12.4.3 最小包围圆形 259
12.4.4 最优拟合椭圆 260
12.4.5 最优拟合直线 261
12.4.6 最小外包三角形 262
12.4.7 逼近多边形 263
12.5 凸包 266
12.5.1 获取凸包 267
12.5.2 凸缺陷 268
12.5.3 几何学测试 270
12.6 利用形状场景算法比较轮廓 275
12.6.1 计算形状场景距离 275
12.6.2 计算Hausdorff距离 278
12.7 轮廓的特征值 280
12.7.1 宽高比 280
12.7.2 Extent 281
12.7.3 Solidity 282
12.7.4 等效直径(Equivalent Diameter) 283
12.7.5 方向 284
12.7.6 掩模和像素点 286
12.7.7 最大值和最小值及它们的位置 291
12.7.8 平均颜色及平均灰度 293
12.7.9 极点 294
第13章 直方图处理 297
13.1 直方图的含义 297
13.2 绘制直方图 301
13.2.1 使用Numpy绘制直方图 301
13.2.2 使用OpenCV绘制直方图 302
13.2.3 使用掩模绘制直方图 307
13.3 直方图均衡化 312
13.3.1 直方图均衡化原理 313
13.3.2 直方图均衡化处理 317
13.4 pyplot模块介绍 319
13.4.1 subplot函数 319
13.4.2 imshow函数 320
第14章 傅里叶变换 324
14.1 理论基础 324
14.2 Numpy实现傅里叶变换 328
14.2.1 实现傅里叶变换 329
14.2.2 实现逆傅里叶变换 330
14.2.3 高通滤波示例 331
14.3 OpenCV实现傅里叶变换 333
14.3.1 实现傅里叶变换 333
14.3.2 实现逆傅里叶变换 335
14.3.3 低通滤波示例 336
第15章 模板匹配 339
15.1 模板匹配基础 339
15.2 多模板匹配 345
第16章 霍夫变换 351
16.1 霍夫直线变换 351
16.1.1 霍夫变换原理 351
16.1.2 HoughLines函数 357
16.1.3 HoughLinesP函数 359
16.2 霍夫圆环变换 361
第17章 图像分割与提取 364
17.1 用分水岭算法实现图像分割与提取 364
17.1.1 算法原理 364
17.1.2 相关函数介绍 366
17.1.3 分水岭算法图像分割实例 375
17.2 交互式前景提取 376
第18章 视频处理 383
18.1 VideoCapture类 383
18.1.1 类函数介绍 383
18.1.2 捕获摄像头视频 387
18.1.3 播放视频文件 388
18.2 VideoWriter类 389
18.2.1 类函数介绍 389
18.2.2 保存视频 391
18.3 视频操作基础 392
第19章 绘图及交互 393
19.1 绘画基础 393
19.1.1 绘制直线 394
19.1.2 绘制矩形 394
19.1.3 绘制圆形 395
19.1.4 绘制椭圆 397
19.1.5 绘制多边形 398
19.1.6 在图形上绘制文字 400
19.2 鼠标交互 402
19.2.1 简单示例 404
19.2.2 进阶示例 405
19.3 滚动条 407
19.3.1 用滚动条实现调色板 408
19.3.2 用滚动条控制阈值处理参数 409
19.3.3 用滚动条作为开关 410
第20章 K近邻算法 412
20.1 理论基础 412
20.2 计算 415
20.2.1 归一化 415
20.2.2 距离计算 416
20.2 手写数字识别的原理 417
20.3 自定义函数手写数字识别 421
20.4 K近邻模块的基本使用 427
20.5 K近邻手写数字识别 429
第21章 支持向量机 431
21.1 理论基础 431
21.2 SVM案例介绍 434
第22章 K均值聚类 439
22.1 理论基础 439
22.1.1 分豆子 439
22.1.2 K均值聚类的基本步骤 441
22.2 K均值聚类模块 441
22.3 简单示例 442
第23章 人脸识别 448
23.1 人脸检测 448
23.1.1 基本原理 448
23.1.2 级联分类器的使用 451
23.1.3 函数介绍 452
23.1.4 案例介绍 453
23.2 LBPH人脸识别 454
23.2.1 基本原理 454
23.2.2 函数介绍 456
23.2.3 案例介绍 457
23.3 EigenFaces人脸识别 458
23.3.1 基本原理 458
23.3.2 函数介绍 459
23.3.3 案例介绍 460
23.4 Fisherfaces人脸识别 461
23.4.1 基本原理 461
23.4.2 函数介绍 463
23.4.3 案例介绍 464
23.5 人脸数据库 465
参与文献 467
附录A 范例 470
· · · · · · (收起)
读后感
用户评价
作为一名多年Python使用者,对图像处理一直抱有浓厚兴趣,但每次接触OpenCV都感觉无从下手,庞大的库和晦涩的概念让我望而却步。直到我遇到了《OpenCV轻松入门:面向Python》,这本书记载了我从OpenCV小白到能独立完成一些基本图像处理任务的转变过程。这本书的优点在于其出色的结构和循序渐进的教学方式。它不会像有些书籍那样,上来就抛出一堆高级概念,而是从最基本、最核心的内容开始讲解,比如如何读取、显示、保存图像,如何进行图像的几何变换(缩放、旋转、平移)等。这些基础知识的讲解非常扎实,配合清晰易懂的代码示例,让我能够快速建立起对OpenCV的整体认知。我尤其喜欢书中对各种图像操作的细致解释,例如在介绍颜色空间转换时,作者不仅给出了RGB到HSV的转换代码,还解释了HSV颜色空间在图像处理中的优势,以及如何利用它来实现更精细的颜色分割。此外,这本书还涵盖了图像滤波、边缘检测、特征匹配等经典计算机视觉算法,这些内容的讲解同样遵循了“由浅入深”的原则,让我能够逐步理解这些算法的原理和应用。
我一直认为,学习一门新技术最好的方式就是动手实践,而《OpenCV轻松入门:面向Python》这本书正是基于这一理念。它不像一些书籍那样,只是枯燥地罗列API和概念,而是通过大量贴近实际的示例,引导读者一步步地掌握OpenCV的核心技术。我特别喜欢书中关于图像分割的章节,例如阈值分割、 Otsu 阈值法以及更复杂的 GrabCut 算法。作者不仅详细解释了这些方法的原理,还通过生动的案例展示了它们在图像背景分离、特定区域提取等方面的应用。我尤其赞赏书中对 GrabCut 算法的讲解,作者通过一个简单的照片抠图案例,将复杂的算法原理变得清晰易懂。此外,这本书还涵盖了对图像纹理分析和颜色特征提取的介绍,这对于我理解和实现一些更高级的图像识别任务非常有帮助。书中提供的代码不仅能够直接运行,还包含了对各个参数的详细说明,让我能够根据自己的需求进行调整和优化。
长期以来,我都在寻找一本能够帮助我真正掌握OpenCV的书籍,而不是仅仅停留在理论层面。《OpenCV轻松入门:面向Python》这本书给了我巨大的惊喜。它的作者似乎非常了解初学者的痛点,用非常平实易懂的语言,将OpenCV这个庞大的库讲解得既生动又实用。我之前尝试过阅读一些OpenCV的官方文档,但那通常是一堆冰冷的API描述,让我感到非常枯燥。《OpenCV轻松入门:面向Python》则完全不同,它更像是一位经验丰富的导师,一步一步地引导你探索OpenCV的奇妙世界。书中每一个章节都围绕着一个具体的图像处理任务展开,例如“如何检测图片中的人脸”、“如何让图片动起来”。然后,作者会详细讲解实现这些任务所需的OpenCV功能,并且提供可以直接运行的代码。我特别欣赏书中对图像形变和透视变换的讲解,这部分内容对于我理解相机成像原理和图像校正非常有帮助。作者不仅给出了代码,还对变换矩阵的含义进行了详细的阐述,让我不再仅仅是“调包侠”,而是能够理解其背后的数学原理。
这本书就像是为我量身打造的,作为一名对计算机视觉充满好奇但又有些畏惧的Python开发者,我一直希望能找到一本能够引导我入门OpenCV的读物。市面上确实有不少相关的书籍,但大多数要么过于理论化,充斥着我暂时难以理解的数学公式,要么就是代码示例过于复杂,让我摸不着头脑。《OpenCV轻松入门:面向Python》这本书则完全不同,它从最基础的概念讲起,循序渐进地引导我理解OpenCV的各种功能。书中大量的代码示例都非常贴合实际应用场景,例如图像的读取、显示、裁剪,以及一些基本的图像处理操作,比如灰度化、二值化、边缘检测等等。我特别喜欢书中对每一个代码块的详细解释,它不会简单地丢给你一堆代码然后让你自己去猜,而是会逐行甚至逐个参数地进行剖析,让我明白这段代码到底做了什么,为什么这么做。更重要的是,作者在讲解过程中,经常会穿插一些学习建议和技巧,比如如何调试代码,如何利用Python的强大生态系统来辅助OpenCV的学习,这些都让我觉得这本书不仅仅是一本技术手册,更像是一位经验丰富的导师在耳边细语。阅读这本书的过程,我感到前所未有的轻松和自信,以前那些看起来遥不可及的计算机视觉技术,现在仿佛都触手可及了。
在我的编程学习旅途中,《OpenCV轻松入门:面向Python》这本书扮演了一个至关重要的角色。我是一名软件工程师,一直希望能够将OpenCV集成到我的Python项目中,但由于缺乏相关的专业知识,总是感到无从下手。这本书的出现,为我提供了一个非常清晰的学习路径。它从最基础的图像处理概念开始,逐步深入到更复杂的计算机视觉算法。我最喜欢的是书中关于图像形态学操作的讲解,比如腐蚀、膨胀、开运算和闭运算。作者不仅详细解释了这些操作的原理,还通过一些实际的例子,展示了它们在图像去噪、物体连接等方面的应用。书中提供的代码示例都非常简洁高效,并且包含了详细的注释,让我能够轻松理解每一行代码的作用。此外,这本书还涵盖了人脸检测、物体识别等热门应用,这些内容对我来说非常有价值。作者在讲解人脸检测时,不仅介绍了Haar特征级联分类器,还提到了更现代的深度学习方法,这让我能够对OpenCV的最新发展有一个全面的了解。
在我的编程学习生涯中,遇到过不少“劝退”的书籍,但《OpenCV轻松入门:面向Python》绝对是个例外。我一直对图像识别和处理领域很感兴趣,但因为本身不是计算机视觉专业背景,对相关的理论知识一窍不通。这本书恰好填补了我的这一块空白。作者的写作风格非常接地气,语言通俗易懂,即使是初学者也能快速跟上节奏。我特别欣赏书中对每一个算法或技术的讲解,不会上来就抛出一堆高深的理论,而是先从一个直观的比喻或者一个简单的例子入手,让你对这个概念有个大概的认识,然后再逐步深入到细节。例如,在讲解特征匹配时,作者并没有直接跳到SIFT或者SURF算法,而是先从一个非常简单的像素点匹配的概念说起,然后逐渐引入更复杂的描述符和匹配策略,这个过程让我觉得非常有条理,也更容易理解。书中的代码示例也同样出色,每一个例子都经过精心设计,既能清晰地展示某个功能,又不会过于冗长复杂。而且,作者非常注重代码的可读性,大量的注释和清晰的变量命名,让我很容易就能理解每一行代码的作用。我甚至可以直接将书中的代码复制到我的Python环境中运行,然后观察效果,这种即时反馈的学习方式极大地增强了我的学习动力。
作为一名业余爱好者,我对计算机视觉充满了好奇,但缺乏专业知识,因此一直没有找到合适的入门途径。直到读了《OpenCV轻松入门:面向Python》,我才真正打开了通往OpenCV世界的大门。这本书的讲解方式非常贴近实际应用,它没有回避那些初学者可能会遇到的困难,而是用清晰的思路和丰富的示例来一一化解。我最喜欢的部分是关于图像滤波器的讲解,书中不仅介绍了各种滤波器的基本原理,如均值滤波、高斯滤波、中值滤波,还详细解释了它们在实际应用中的优缺点,比如如何使用高斯滤波来去除噪声,如何使用中值滤波来处理椒盐噪声。而且,书中提供的代码示例都非常精炼,让我能够快速理解并应用到自己的项目中。例如,在讲解边缘检测时,作者不仅介绍了Canny边缘检测算法,还详细说明了其各个参数的含义,以及如何通过调整参数来获得最佳的边缘检测效果。这种细致的讲解让我不仅学会了“怎么做”,更重要的是理解了“为什么这么做”。
我一直梦想着能用Python开发一些有趣的图像处理项目,比如给照片添加特效,或者实现一个简单的图像搜索功能。然而,每次尝试使用OpenCV都会被其庞大的API和复杂的概念所困扰。《OpenCV轻松入门:面向Python》这本书简直是我的救星!它就像一本“OpenCV使用指南”,将复杂的计算机视觉技术分解成一个个容易理解的模块。我特别喜欢书中关于图像操作的部分,像是像素级别的访问和修改,色彩空间的转换,以及各种滤波器的应用。作者的讲解方式非常注重实践,每一个操作都会附带清晰的代码示例,让我能够立刻动手尝试。例如,在介绍高斯模糊时,书中不仅给出了如何应用高斯模糊的代码,还详细解释了高斯核的原理以及不同参数对模糊效果的影响,这让我能够更深入地理解图像处理的本质。此外,这本书还涵盖了一些更高级的主题,比如轮廓检测、特征提取和对象跟踪,这些在我的项目需求中都非常有用。作者在讲解这些高级主题时,依然保持了轻松易懂的风格,并且提供了大量可运行的代码,让我能够快速上手。读完这本书,我感觉自己对OpenCV的掌握程度有了质的飞跃,再也不害怕面对复杂的计算机视觉任务了。
我一直对机器学习和计算机视觉领域充满热情,但由于本身不是计算机科学专业出身,对于OpenCV这样专业的库总是感到些许畏惧。《OpenCV轻松入门:面向Python》这本书彻底改变了我的看法。这本书最大的亮点在于它将复杂的OpenCV技术与Python这门易于上手的语言相结合,为我提供了一个非常友好的学习平台。我一直非常欣赏作者的写作风格,他善于用生动形象的比喻来解释抽象的概念,比如在讲解傅里叶变换时,作者并没有直接抛出复杂的数学公式,而是通过类比“声音的频谱分析”来帮助我理解图像的频率成分,这种方式让我豁然开朗。此外,书中对图像特征提取和匹配的讲解也让我印象深刻。作者不仅介绍了SIFT、SURF等经典的特征匹配算法,还详细分析了它们在不同场景下的适用性,并提供了大量的代码示例,让我能够快速上手进行图像匹配和对象识别。我尤其喜欢书中关于目标跟踪的章节,通过一些简单的示例,我能够看到OpenCV在处理视频流时强大的能力,这让我对未来的项目充满信心。
作为一名对算法和数据分析充满热情的研究者,我一直渴望将OpenCV应用于我的学术研究中,但一直苦于没有找到一本能够兼顾理论深度和实践易用性的书籍。《OpenCV轻松入门:面向Python》这本书完美地满足了我的需求。它不仅仅是一本技术手册,更像是一本为Python开发者量身打造的OpenCV指南。我特别欣赏书中对图像特征描述符和匹配器的详细讲解,例如 SIFT、 SURF、 ORB 等算法。作者不仅深入浅出地阐述了这些算法的数学原理,还提供了在Python中实现这些算法的完整代码。我尤其喜欢书中关于“视觉词袋模型”的介绍,这是一种将图像特征进行分类和编码的方法,对于我进行大规模图像检索和识别研究非常有帮助。作者还介绍了如何利用OpenCV进行视频分析,包括运动目标检测、光流估计等,这些内容都对我未来的研究方向提供了重要的启示。总而言之,这本书不仅提升了我对OpenCV的掌握程度,更激发了我对计算机视觉领域更深入探索的兴趣。
主要是api调用和简单的原理介绍,适合快速浏览,补齐、梳理相关领域知识
主要是api调用和简单的原理介绍,适合快速浏览,补齐、梳理相关领域知识
第一次不推荐购买的书,看了许久,作者简直是在凑字数,一样的的代码(仅变量名称不同),能重复出现3遍(例3.8、3.9、3.11);明明一句话能解释清楚的,得用两三句话,来回解释,很繁冗;还有一些图、表一摸一样的重复两三遍(表3-9、表3-15;图3-5、3-6、3-8); 除了fh连篇之外,讲解的内容即不全面,也不具体,更无逻辑可言;立书本是分享作者的理解,而在书中我只看到了生搬硬套。 因此,强烈不推荐此书。想学opencv-python的可以找《opencv3计算机视觉:python语言实现》,很简洁明了;或者是直接学习官网教程。
第一次不推荐购买的书,看了许久,作者简直是在凑字数,一样的的代码(仅变量名称不同),能重复出现3遍(例3.8、3.9、3.11);明明一句话能解释清楚的,得用两三句话,来回解释,很繁冗;还有一些图、表一摸一样的重复两三遍(表3-9、表3-15;图3-5、3-6、3-8); 除了fh连篇之外,讲解的内容即不全面,也不具体,更无逻辑可言;立书本是分享作者的理解,而在书中我只看到了生搬硬套。 因此,强烈不推荐此书。想学opencv-python的可以找《opencv3计算机视觉:python语言实现》,很简洁明了;或者是直接学习官网教程。
纯粹为了了解一下有什么功能,达到了目的。