新書推薦:
![声学手册 第7版 声学设计与建筑声学实用指南](http://103.6.6.66/upload/mall/productImages/24/31/9787115633606.jpg)
《
声学手册 第7版 声学设计与建筑声学实用指南
》
售價:HK$
218.3
![掼蛋入门到精通(礼盒版)](http://103.6.6.66/upload/mall/productImages/24/31/9787122452740.jpg)
《
掼蛋入门到精通(礼盒版)
》
售價:HK$
193.2
![中国书法散论(熊秉明文艺三书)](http://103.6.6.66/upload/mall/productImages/24/31/9787208187726.jpg)
《
中国书法散论(熊秉明文艺三书)
》
售價:HK$
71.3
![战争事典083:细说靖难之役 : 明成祖朱棣的戎马征程](http://103.6.6.66/upload/mall/productImages/24/30/9787513945899.jpg)
《
战争事典083:细说靖难之役 : 明成祖朱棣的戎马征程
》
售價:HK$
114.8
![时尚箱包及配饰 [英]达拉-简·吉尔罗伊](http://103.6.6.66/upload/mall/productImages/24/31/9787111756842.jpg)
《
时尚箱包及配饰 [英]达拉-简·吉尔罗伊
》
售價:HK$
170.2
![当代历史学新趋势:理论、方法与实践(论世衡史丛书,当下历史学在研究什么?未来历史学的趋势是什么?)](http://103.6.6.66/upload/mall/productImages/24/31/9787220134739.jpg)
《
当代历史学新趋势:理论、方法与实践(论世衡史丛书,当下历史学在研究什么?未来历史学的趋势是什么?)
》
售價:HK$
112.7
![晋国600年(全四册)](http://103.6.6.66/upload/mall/productImages/24/30/9787510476303.jpg)
《
晋国600年(全四册)
》
售價:HK$
250.7
![深中通道 穿越千年文明 迈向中国式现代化](http://103.6.6.66/upload/mall/productImages/24/31/9787218176932.jpg)
《
深中通道 穿越千年文明 迈向中国式现代化
》
售價:HK$
101.2
|
編輯推薦: |
本书不仅适合作为软件开发人员的自学用书,而且适合作为高等院校相关专业的教学参考书,还适合供初入职场的开发人员查阅、参考。
|
內容簡介: |
《Python OpenCV快速入门到精通》是一本基础与实践相结合的图书。本书从学Python OpenCV到用Python OpenCV的角度出发,在帮助读者朋友快速掌握Python OpenCV基础的同时,引导读者朋友如何使用Python OpenCV开发简单的应用程序。全书共28章,主要分为3个篇章(基础篇、实战篇、强化篇),基础篇包括搭建开发环境、图像处理基础、NumPy工具包、绘图及交互、图像的几何变换、图像运算、阈值、形态学操作、滤波器、图形检测、图像轮廓、模板匹配、视频处理和人脸检测与识别;实战篇包括更改卡通人物的衣服颜色,图像操作之均分、截取和透视,计算轮廓的面积、周长和极点,掩模调试器,粘贴带透明区域的图像,鼠标操作之缩放和移动图像,机读答题卡,检测蓝色矩形的交通标志牌,滤镜编辑器,给图像打马赛克,给图像的任意区域打马赛克和手势识别;强化篇包括人工瘦脸和MR智能视频打卡系统。本书提供丰富的源码资源,包含基础篇的实例、基础篇的13个综合实例、实战篇的12个案例和强化篇2个项目,力求为读者朋友打造一本既能学Python OpenCV又能用Python OpenCV的好书。本书不仅适合作为软件开发者的自学用书,而且适合作为高等院校相关专业的教学参考书,还适合供初入职场的开发人员查阅、参考。
|
目錄:
|
第1篇 基础篇001
第1章 搭建开发环境 002
1.1 Python的下载和安装 002
1.1.1 下载Python 002
1.1.2 安装Python 004
1.1.3 测试Python是否安装成功 006
1.2 Python OpenCV的下载和安装 006
1.2.1 下载和安装OpenCV-Contrib-Python工具包 006
1.2.2 测试OpenCV-Contrib-Python工具包和NumPy工具包是否安装成功 007
1.3 PyCharm的下载和安装 008
1.3.1 下载PyCharm 008
1.3.2 安装PyCharm 008
1.3.3 启动并配置PyCharm 010
第2章 图像处理基础 015
2.1 图像处理的基本操作 016
2.1.1 读取图像 016
2.1.2 显示图像 017
2.1.3 保存图像 019
2.1.4 获取图像属性 019
2.2 像素 020
2.2.1 确定像素的位置 021
2.2.2 获取像素的BGR值 022
2.2.3 修改像素的BGR值 024
2.3 色彩空间 025
2.3.1 GRAY色彩空间 025
2.3.2 HSV色彩空间 026
2.4 通道 028
2.4.1 拆分通道 028
2.4.2 合并通道 030
2.4.3 alpha通道 032
2.5 综合案例——显示不同艺术效果下的图像 034
2.6 实战练习 036
第3章 NumPy工具包 037
3.1 NumPy工具包与OpenCV 038
3.2 数组的类型 038
3.3 创建数组 039
3.3.1 最常规的array()方法 039
3.3.2 创建指定维度和数据类型未初始化的数组 041
3.3.3 创建用0填充的数组 041
3.3.4 创建用1填充的数组 042
3.3.5 创建随机数组 042
3.4 操作数组 043
3.4.1 加法运算 043
3.4.2 减法、乘法和除法运算 043
3.4.3 幂运算 044
3.4.4 比较运算 045
3.4.5 复制数组 045
3.5 数组的索引和切片 046
3.5.1 索引 046
3.5.2 切片式索引 046
3.5.3 二维数组索引 048
3.5.4 二维数组切片式索引 049
3.6 创建图像 050
3.6.1 创建黑白图像 050
3.6.2 创建彩色图像 051
3.6.3 创建随机图像 052
3.7 综合案例——拼接图像 052
3.8 实战练习 055
第4章 绘图及交互 056
4.1 线段的绘制 056
4.2 矩形的绘制 058
4.3 圆形的绘制 059
4.4 多边形的绘制 061
4.5 文字的绘制 063
4.5.1 文字的斜体效果 065
4.5.2 文字的垂直镜像效果 065
4.5.3 在图像上绘制文字 066
4.6 鼠标交互 066
4.7 滑动条 068
4.8 综合案例——动态绘制图形 069
4.9 实战练习 072
第5章 图像的几何变换 073
5.1 缩放 074
5.1.1 通过dsize参数实现缩放 074
5.1.2 通过fx和fy参数实现缩放 074
5.2 翻转 076
5.3 仿射变换 077
5.3.1 平移 079
5.3.2 旋转 080
5.3.3 倾斜 081
5.4 透视 083
5.5 综合案例——让图像呈现波浪效果 085
5.6 实战练习 087
第6章 图像运算 088
6.1 掩模 088
6.2 图像的加运算 090
6.3 图像的位运算 094
6.3.1 按位与运算 094
6.3.2 按位或运算 095
6.3.3 按位取反运算 097
6.3.4 按位异或运算 098
6.4 合并图像 100
6.4.1 加权和 100
6.4.2 覆盖 102
6.5 综合案例——为图像添加水印效果 103
6.6 实战练习 104
第7章 阈值 105
7.1 阈值概述 106
7.2 阈值处理函数 106
7.3 二值化阈值处理 107
7.3.1 “非黑即白”的图像 107
7.3.2 反二值化处理 109
7.4 零处理 111
7.4.1 低于阈值零处理 111
7.4.2 超出阈值零处理 112
7.5 截断阈值处理 113
7.6 自适应阈值处理 114
7.7 Otsu方法 117
7.8 综合案例——阈值调试器 119
7.9 实战练习 120
第8章 形态学操作 121
8.1 腐蚀 121
8.2 膨胀 123
8.3 开运算 124
8.4 闭运算 126
8.5 形态学方法 127
8.5.1 梯度运算 127
8.5.2 顶帽运算 128
8.5.3 黑帽运算 129
8.6 综合案例——矩形膨胀 130
8.7 实战练习 132
第9章 滤波器 133
9.1 图像平滑处理 133
9.2 均值滤波器 134
9.3 中值滤波器 136
9.4 高斯滤波器 138
9.5 双边滤波器 140
9.6 综合案例——图像的锐化 142
9.7 实战练习 144
第10章 图形检测 145
10.1 Canny边缘检测 145
10.2 霍夫变换 147
10.2.1 直线检测 147
10.2.2 圆环检测 149
10.3 综合案例——对噪声图像进行Canny边缘检测 150
10.4 实战练习 151
第11章 图像轮廓 152
11.1 图像轮廓的操作 152
11.1.1 查找轮廓 152
11.1.2 绘制轮廓 153
11.2 轮廓拟合 156
11.2.1 矩形包围框 156
11.2.2 圆形包围框 157
11.2.3 最小三角包围框 158
11.2.4 最优椭圆包围框 159
11.3 凸包 160
11.4 综合案例——计算图形的重心坐标 161
11.5 实战练习 164
第12章 模板匹配 165
12.1 模板匹配方法 165
12.2 单模板匹配 167
12.2.1 单目标匹配 167
12.2.2 多目标匹配 170
12.3 多模板匹配 174
12.4 综合案例——查找文件中重复的图像 176
12.5 实战练习 177
第13章 视频处理 179
13.1 读取并显示摄像头视频 179
13.1.1 VideoCapture类 180
13.1.2 如何使用VideoCapture类 181
13.2 播放视频文件 185
13.2.1 读取并显示视频文件 185
13.2.2 视频的暂停播放和继续播放 186
13.2.3 获取视频文件的属性 188
13.3 保存视频文件 189
13.3.1 VideoWriter类 189
13.3.2 如何使用VideoWriter类 191
13.4 综合案例——按一定间隔截取视频帧 195
13.5 实战练习 196
第14章 人脸检测与识别 197
14.1 人脸检测 197
14.1.1 级联分类器 198
14.1.2 加载级联分类器 199
14.1.3 调用级联分类器对象 200
14.2 检测其他内容 201
14.2.1 眼睛检测 201
14.2.2 猫脸检测 202
14.2.3 行人检测 203
14.2.4 车牌检测 204
14.3 人脸识别 205
14.3.1 Eigenfaces人脸识别器 205
14.3.2 Fisherfaces人脸识别器 208
14.3.3 Local Binary Pattern Histogram人脸识别器 210
14.4 综合案例——戴墨镜的贴图特效 213
14.5 实战练习 215
第2篇 实战篇217
第15章 更改卡通人物的衣服颜色 218
15.1 案例效果预览 218
15.2 业务流程图 219
15.3 实现步骤 219
15.3.1 复制图像 219
15.3.2 互换颜色分量 221
15.3.3 显示更改颜色后的结果 222
第16章 图像操作之均分、截取和透视(OpenCV NumPy实现) 224
16.1 案例效果预览 225
16.2 业务流程图 225
16.3 实现步骤 227
16.3.1 均分图像 227
16.3.2 截取图像 228
16.3.3 透视图像 229
16.3.4 公共模块 230
第17章 计算轮廓的面积、周长和极点(OpenCV Python内置函数 NumPy实现) 232
17.1 案例效果预览 233
17.2 业务流程图 233
17.3 实现步骤 234
17.3.1 计算轮廓的面积 234
17.3.2 计算轮廓的周长 234
17.3.3 标记轮廓的极点 235
17.3.4 公共模块 236
17.3.5 显示绘制的轮廓面积、轮廓周长和轮廓极点 237
第18章 掩模调试器(OpenCV NumPy实现) 239
18.1 案例效果预览 239
18.2 业务流程图 240
18.3 实现步骤 241
18.3.1 HSV基本颜色分量范围 241
18.3.2 inRange( )方法 241
18.3.3 滑动条 242
18.3.4 编码实现 243
第19章 粘贴带透明区域的图像(OpenCV NumPy实现) 247
19.1 案例效果预览 247
19.2 业务流程图 248
19.3 实现步骤 249
19.3.1 “遍历像素法”的实现原理 249
19.3.2 “遍历像素法”的实现过程 250
19.3.3 “掩模覆盖法”的实现原理 251
19.3.4 “掩模覆盖法”的实现过程 252
19.3.5 显示粘贴后的结果图像 254
第20章 鼠标操作之缩放和移动图像(OpenCV NumPy实现) 256
20.1 案例效果预览 257
20.2 业务流程图 258
20.3 实现步骤 258
20.3.1 缩放图像 258
20.3.2 垂直移动图像 260
20.3.3 水平移动图像 261
20.3.4 绑定响应函数 262
第21章 机读答题卡(OpenCV NumPy实现) 263
21.1 案例效果预览 264
21.2 业务流程图 265
21.3 实现步骤 265
21.3.1 公共工具模块 265
21.3.2 获取矩形图案的平面透视图 268
21.3.3 判断填涂的是哪一个选项 269
21.3.4 判断是哪一道题目 270
21.3.5 显示机读卡的平面透视图 272
21.3.6 显示对平面透视图进行二值化阈值处理的结果 273
21.3.7 显示对二值化阈值处理后的图像进行闭运算后的结果 273
21.3.8 保存机读卡上填涂的选项 274
21.3.9 打印在机读卡上填涂的答案 275
第22章 检测蓝色矩形的交通标志牌(OpenCV NumPy实现) 276
22.1 案例效果预览 276
22.2 业务流程图 277
22.3 实现步骤 277
22.3.1 提取交通标志牌的蓝色区域 277
22.3.2 获取交通标志牌的轮廓 279
22.3.3 闭合交通标志牌的所在区域 280
22.3.4 标记交通标志牌的所在区域 282
22.3.5 显示检测到的交通标志 283
第23章 滤镜编辑器(OpenCV NumPy Math实现) 284
23.1 案例效果预览 285
23.2 业务流程图 285
23.3 实现步骤 286
23.3.1 导入工具包 286
23.3.2 浮雕滤镜效果 286
23.3.3 雕刻滤镜效果 288
23.3.4 凸透镜滤镜效果 290
23.3.5 显示、释放窗口 292
第24章 给图像打马赛克(OpenCV Math实现) 294
24.1 案例效果预览 295
24.2 业务流程图 296
24.3 实现步骤 297
24.3.1 马赛克的实现原理 297
24.3.2 给图像整体打马赛克 297
24.3.3 显示给图像整体打马赛克的效果图 298
24.3.4 给图像中的人脸打马赛克 299
24.3.5 显示给图像中的人脸打马赛克的效果图 301
第25章 给图像的任意区域打马赛克(OpenCV NumPy实现) 303
25.1 案例效果预览 303
25.2 业务流程图 304
25.3 实现步骤 305
25.3.1 公共工具模块 305
25.3.2 对已选择区域打马赛克的方法 306
25.3.3 鼠标交互 307
25.3.4 选择打马赛克的区域 308
25.3.5 融合打马赛克的区域 310
第26章 手势识别(OpenCV NumPy Math实现) 312
26.1 案例效果预览 312
26.2 业务流程图 314
26.3 实现步骤 315
26.3.1 肤色检测 315
26.3.2 降噪处理 316
26.3.3 轮廓处理 316
26.3.4 计算手势的凹凸点 317
26.3.5 绘制手势的手指个数 318
第3篇 强化篇321
第27章 人工瘦脸(OpenCV NumPy Dlib实现) 322
27.1 需求分析 323
27.2 程序设计 323
27.2.1 开发环境 323
27.2.2 功能结构 323
27.2.3 业务流程 323
27.2.4 程序结构 324
27.3 知识拓展 324
27.3.1 Dlib工具包 324
27.3.2 人脸关键点提取器 326
27.3.3 编码实现 326
27.4 模块设计 329
27.4.1 公共模块 329
27.4.2 检测人脸关键点模块 329
27.4.3 局部平移算法模块 331
27.4.4 双线性插值法模块 331
27.4.5 瘦脸模块 332
第28章 MR智能视频打卡系统(OpenCV NumPy os实现) 335
28.1 需求分析 336
28.2 系统设计 337
28.2.1 开发环境 337
28.2.2 功能结构 337
28.2.3 业务流程 337
28.2.4 项目结构 340
28.3 文件系统设计 341
28.4 数据实体模块设计 342
28.5 工具模块设计 343
28.5.1 公共工具模块 344
28.5.2 IO流模块 345
28.5.3 摄像头工具模块 350
28.6 服务模块设计 352
28.6.1 人事服务模块 352
28.6.2 人脸识别服务模块 360
28.7 程序入口设计 362
28.7.1 用户权限管理 362
28.7.2 主菜单设计 363
28.7.3 人脸打卡功能 364
28.7.4 为新员工登记人脸照片样本 365
28.7.5 删除旧员工全部数据 365
28.7.6 查询员工打卡记录 366
28.7.7 生成考勤报表 367
28.7.8 自定义上下班时间 369
28.7.9 启动程序 371
|
內容試閱:
|
OpenCV是一个开源的计算机视觉库,可以在Windows、Linux、macOS等操作系统上运行。它起源于英特尔性能实验室的实验研究,由俄罗斯的专家负责实现和优化,为计算机视觉提供通用性接口。为了快速建立精巧的视觉应用,OpenCV提供了许多模块和方法。在日常开发工作中,不必过多关注这些模块和方法的具体实现细节,只需要关注如何使用它们对图像进行相应的处理。
本书内容
全书共分为28章,主要通过“基础篇(14章) 实战篇(12章) 强化篇(2章)”3大维度一体化的讲解方式,本书的知识结构如下图所示。
本书特色
1.注释详尽、提升效率
书中的大部分实例都标注了详尽的代码注释,这样既能够降低代码的理解难度,又能够提高学习效率。
2.整合思维、综合运用
基础篇除了第一章,其他章末尾都会有一个综合案例。这个综合实例打破了每一章知识点的局限性,通过结合之前讲解的知识点,实现比较强大的功能,进而得到让读者耳目一新的运行结果。
3.趣味案例、实用项目
案例篇中的案例强调趣味性,希望能够快速地吸引读者,激发读者的主观能动性。项目篇中的两个项目兼顾趣味性和实用性,让读者学而不累,学有所得。
4.高效栏目、贴心提示
本书根据讲解知识点的需要,设置了“注意”“说明”等高效栏目,既能够让读者快速理解知识点,又能够提醒读者规避编程陷阱。
本书读者对象
√初学编程的自学者 √编程爱好者
√大中专院校的老师和学生 √相关培训机构的老师和学员
√毕业设计的学生 √初、中、高级程序开发人员
√程序测试及维护人员 √参加实习的“菜鸟”程序员
读者服务
为方便解决读者在学习本书过程中遇到的疑难问题及获取更多图书配套资源,我们在明日学院网站为您提供了社区服务和配套学习服务支持。此外,我们还提供了质量反馈信箱及售后服务电话等,如图书有质量问题,可以及时联系我们,我们将竭诚为您服务。
质量反馈信箱:mingrisoft@mingrisoft.com
售后服务电话:4006751066
微信公众号:明日IT部落
致读者
本书由明日科技Python开发团队策划并组织编写,主要编写人员有赵宁、申小琦、王小科、赛奎春、刘书娟、李磊、王国辉、高春艳、李再天、张鑫、周佳星、葛忠月、李春林、宋万勇、张宝华、杨丽、刘媛媛、庞凤、谭畅、何平、李菁菁、依莹莹等。在编写本书的过程中,我们本着科学、严谨的态度,力求精益求精,但疏漏之处在所难免,敬请广大读者批评斧正。
感谢您阅读本书,希望本书能成为您编程路上的领航者。
祝您读书快乐!
编著者
|
|