新書推薦:
《
情绪的惊人力量:跟随内心的指引,掌控情绪,做心想事成的自己
》
售價:NT$
230.0
《
棉的全球史(历史·文化经典译丛)
》
售價:NT$
500.0
《
超越百岁看这本就够了
》
售價:NT$
254.0
《
亚洲戏剧史·南亚卷
》
售價:NT$
653.0
《
中国历代竹器图谱与数字活化
》
售價:NT$
2540.0
《
EDA技术与设计(第2版)
》
售價:NT$
387.0
《
揉碎浪漫(全两册)
》
售價:NT$
320.0
《
古籍善本
》
售價:NT$
2448.0
|
編輯推薦: |
本书融入了作者多年的实践经验和心得,针对Java OpenCV编程上的痛点进行了强化,并通过大量实例让读者在实践中学习,以期达到轻松入门、事半功倍的效果!
? 通俗易懂 深入浅出讲解主要算法的原理,避免简单地罗列公式。
? 图文并茂 全书配有400多张插图,形象生动阐述抽象内容。
? 高效入门 详细介绍了近120个函数及其参数设置,并给出了100多个示例程序,让读者高效率地学习。同时,本书也能作为案头的工具书使用。
? 内容全面 既包括各种传统图像处理算法,也包括机器学习、人脸检测、目标跟踪等高级内容。
|
內容簡介: |
OpenCV作为一个应用广泛的开源计算机视觉库,正在受到越来越多的关注。目前OpenCV的各类教程基本上以Python和C 为主,基于Java的OpenCV书籍则少之又少,本书旨在弥补这一空白。 本书共13章,前4章是基础部分,包括OpenCV概述和安装配置、数字图像基础及图像基础操作等内容;第5到11章则包括了图像的几何变换、图像平滑、形态学操作、直方图、边缘检测与轮廓、霍夫变换、特征点检测和匹配等进阶内容;第12~13章属于提高内容,主要介绍机器学习和视频跟踪技术。 本书以通俗易懂的语言,图文并茂的讲解力图使初学者能够快速高效入门。本书面向的读者是包括高校学生在内的各类初学者、研究计算机视觉的业余爱好者及需要快速上手的专业人员。
|
關於作者: |
姚利民,毕业于东南大学,长期在外资企业从事管理工作,同时致力于AI及图像处理的研究。2012年赴某知名跨国企业全球总部工作,回国后自主创业。目前主要从事AI研究,专攻棋类博弈和计算机视觉。有感于相关资源的匮乏,主讲基于Java的OpenCV课程,短期内获大量关注。
|
目錄:
|
第1章 OpenCV概述 1
1.1 OpenCV简介 1
1.1.1 什么是OpenCV 1
1.1.2 OpenCV简史 1
1.1.3 OpenCV的特色与应用 2
1.1.4 OpenCV的主要模块 2
1.2 OpenCV的下载及安装 3
1.2.1 Java环境的配置 4
1.2.2 Eclipse简介及安装 6
1.2.3 OpenCV的下载和安装 8
1.2.4 Eclipse中OpenCV的配置 11
1.2.5 第1个OpenCV程序 13
1.3 Eclipse及Java基础 18
1.3.1 Eclipse的界面 18
1.3.2 Eclipse的常用快捷键 19
1.3.3 Eclipse中如何新建Java项目 20
1.3.4 Eclipse中如何新建Java类 21
1.3.5 Eclipse中如何调试程序 21
1.3.6 Java语言基础 23
1.4 本章小结 25
第2章 图像处理基础 26
2.1 数字图像基础 26
2.1.1 数字图像的基本概念 26
2.1.2 像素的存储 29
2.1.3 数字图像的分类 31
2.2 矩阵与Mat类 33
2.2.1 Mat类简介 33
2.2.2 矩阵数据的存储 35
2.2.3 创建矩阵的方法 35
2.2.4 获取矩阵信息 40
2.2.5 矩阵相关操作 42
2.3 OpenCV中常用数据结构 48
2.3.1 点的表示:Point类 48
2.3.2 矩形的表示:Rect类 48
2.3.3 尺寸的表示:Size类 48
2.3.4 颜色的表示:Scalar类 49
2.4 颜色和通道 50
2.5 本章小结 51
第3章 图像基本操作(1) 52
3.1 图像读写与显示 52
3.1.1 图像的读取 52
3.1.2 图像的保存 53
3.1.3 图像的显示 54
3.2 绘图函数 56
3.2.1 绘制直线 56
3.2.2 绘制矩形 56
3.2.3 绘制圆形 56
3.2.4 绘制椭圆 58
3.2.5 绘制多边形 59
3.2.6 绘制文字 59
3.2.7 绘制箭头 61
3.2.8 绘制外框 62
3.3 颜色空间操作 63
3.3.1 颜色空间的转换 63
3.3.2 图像通道的拆分与合并 67
3.4 本章小结 69
第4章 图像基本操作(2) 71
4.1 图像的算术运算 71
4.1.1 加法运算 71
4.1.2 减法运算 73
4.1.3 点乘运算 74
4.1.4 点除运算 76
4.2 图像的按位运算 79
4.2.1 按位非运算 79
4.2.2 按位与运算 80
4.2.3 按位或运算 81
4.2.4 按位异或运算 83
4.3 图像二值化 85
4.4 查找表 90
4.5 图像的拼接 94
4.6 子矩阵 96
4.7 掩膜 99
4.8 图像金字塔 101
4.8.1 图像金字塔概述 101
4.8.2 向下采样与向上采样 101
4.8.3 高斯金字塔 102
4.8.4 拉普拉斯金字塔 103
4.9 本章小结 106
第5章 图像的几何变换 108
5.1 仿射变换 108
5.2 透视变换 111
5.3 平移 113
5.4 旋转 115
5.5 缩放 117
5.6 图像的翻转 118
5.7 本章小结 120
第6章 图像平滑 122
6.1 图像的噪声 122
6.2 滤波器 125
6.3 线性滤波 128
6.3.1 均值滤波 128
6.3.2 方框滤波 130
6.3.3 高斯滤波 132
6.4 非线性滤波 134
6.4.1 中值滤波 134
6.4.2 双边滤波 136
6.5 本章小结 139
第7章 图像形态学 140
7.1 像素的距离 140
7.2 像素的邻域 145
7.3 膨胀与腐蚀 150
7.3.1 腐蚀 152
7.3.2 膨胀 156
7.4 形态学操作 158
7.4.1 开运算和闭运算 158
7.4.2 顶帽和黑帽 160
7.4.3 形态学梯度 162
7.4.4 击中击不中 163
7.5 本章小结 165
第8章 直方图与匹配 167
8.1 直方图简介 167
8.2 直方图统计 171
8.3 直方图比较 173
8.4 直方图均衡化 176
8.5 自适应的直方图均衡化 178
8.6 直方图反向投影 180
8.7 模板匹配 182
8.8 本章小结 186
第9章 边缘与轮廓 188
9.1 边缘检测 188
9.2 边缘检测算子 189
9.2.1 Sobel算子 189
9.2.2 Scharr算子 192
9.2.3 Laplacian算子 194
9.3 Canny边缘检测 195
9.3.1 Canny边缘检测的步骤 196
9.3.2 Canny算法的实现 197
9.4 轮廓 198
9.4.1 轮廓检测 198
9.4.2 轮廓的层级 199
9.4.3 轮廓的特征 204
9.5 本章小结 218
第10章 霍夫变换 221
10.1 霍夫变换的原理 221
10.2 霍夫线检测 223
10.2.1 标准霍夫变换 224
10.2.2 概率霍夫变换 227
10.3 霍夫圆检测 230
10.3.1 霍夫圆检测的原理 230
10.3.2 霍夫梯度法 230
10.4 本章小结 234
第11章 特征点检测和匹配 236
11.1 角点检测 236
11.1.1 角点的概念 236
11.1.2 Harris角点检测算法 237
11.1.3 Shi-Tomasi角点检测算法 240
11.2 特征点检测 244
11.2.1 SIFT算法 244
11.2.2 SURF算法 249
11.2.3 FAST算法 252
11.2.4 ORB算法 254
11.3 特征点匹配 257
11.3.1 暴力匹配 260
11.3.2 FLANN匹配 262
11.3.3 RANSAC 264
11.4 本章小结 268
第12章 机器学习 269
12.1 K均值 269
12.2 K近邻 274
12.3 决策树 277
12.4 随机森林 280
12.5 SVM 282
12.6 人脸检测 291
12.6.1 Haar特征 291
12.6.2 AdaBoost 292
12.6.3 级联分类器 293
12.7 本章小结 297
第13章 视频分析 299
13.1 视频基础操作 299
13.1.1 视频的读取 299
13.1.2 视频的保存 301
13.1.3 视频属性 303
13.2 均值迁移法 305
13.2.1 Meanshift算法 305
13.2.2 Camshift算法 309
13.3 背景建模 312
13.3.1 高斯混合模型 313
13.3.2 K-NN模型 315
13.4 光流分析 318
13.4.1 稀疏光流法 318
13.4.2 稠密光流法 322
13.5 本章小结 325
参考文献 327
IV
V
|
內容試閱:
|
OpenCV是一个开源的计算机视觉库,它实现了图像处理和计算机视觉方面很多通用的算法。免费开源而又强大,这些特性使OpenCV日益成为计算机视觉领域中一个不可或缺的重要工具。OpenCV同时提供了C 、Java和Python的接口,但是目前OpenCV的教程主要以Python和C 为主,而基于Java的教程则近乎空白,本书旨在弥补这一空白。
Java是一门优秀的跨平台的编程语言,它脱胎于C ,同时摒弃了指针和多继承等特别复杂的东西,因而受到广泛欢迎。无论是Java语言还是OpenCV,相关的资料都已经相当丰富,但是,基于Java的OpenCV开发仍然有着不小的难度。首先,OpenCV有着众多的数据类型,例如,最核心的Mat(矩阵)类就有MatOfInt、MatOfPoint、MatOfPoint2f、MatOfRect等十几个子类。OpenCV中各种函数的参数类型各不相同,因而在完成某一任务时需要进行各种数据类型的转换,而这对于初学者来讲是有着相当难度的。其次,用Java语言调用OpenCV函数时很多参数需要加上模块名,而参数和模块名的搭配又很容易搞错。再次,Java的数据类型与OpenCV并不完全兼容。例如,Java中byte类型的取值范围为?128~127,而OpenCV中像素值的取值范围通常为0~255,如果不加注意,则程序调用的结果往往与预期大相径庭。毫无疑问,一本精心编写的入门教程将为初学者早日“登堂入室”节省大量宝贵的时间。作为一个过来人,笔者将众多的经验和心得融入本书,希望读者阅读本书后能够少走弯路,早日步入OpenCV的神奇殿堂!
本书主要内容
本书是一本基于Java的OpenCV入门级教程,目标是让各类型的初学者在最短时间内掌握OpenCV的编程技巧。全书共13章,各章主要内容如下:
第1章首先介绍OpenCV的发展历程、主要模块等内容,然后介绍OpenCV的下载、安装和配置,并通过一个OpenCV程序进行验证,最后归纳总结了Eclipse和Java的一些知识。
第2章主要介绍数字图像的基础、OpenCV中的Mat类及相关操作、OpenCV中常用的数据结构等。
第3章介绍图像的读写显示、常用的绘图函数及颜色空间操作。
第4章介绍图像的算术运算、逻辑运算、二值化和查找表等阈值操作及图像金字塔等内容。
第5章介绍图像的几何变换,包括平移、旋转、缩放、仿射变换、透视变换等。
第6章介绍与图像平滑相关的内容,包括图像噪声、滤波器、线性滤波和非线性滤波。
第7章首先介绍像素的距离和邻域等基本概念,然后介绍膨胀、腐蚀及形态学操作。
第8章介绍直方图及模板匹配的相关内容。
第9章介绍边缘检测算子、Canny边缘检测、轮廓检测、轮廓特征等内容。
第10章介绍霍夫变换的原理、霍夫线检测和霍夫圆检测的内容。
第11章介绍角点检测、特征点检测及特征点匹配等内容。
第12章首先介绍机器学习的相关内容,包括K均值、K近邻、决策树、随机森林、SVM等,然后介绍人脸检测的相关内容。
第13章介绍视频的基础操作及均值迁移法、背景建模、光流估计等目标追踪技术。
本书详细介绍了近120个OpenCV函数,并给出了100多个示例程序,力求让读者在最短时间内掌握基于Java的OpenCV编程技术。
阅读建议
本书是一本面向初学者的入门级教程。为了适合各类型读者的需要,本书采用了OpenCV 3.4.16和4.6.0两个版本,前者比较稳定,后者则是截稿时的最新版本,书中所有代码均在这两个版本中进行了测试。在3.4.16版本中,所有代码均可不加修改地正常运行,而在4.6.0版本中,除了Draw2.java和Draw3.java两个程序需要略作修改(参见代码说明)外,其余程序也均能正常运行。另外,本书详细介绍了近120个常用的OpenCV函数并列出了相关参数(含相应模块名),因而也可以作为备查的工具书使用。
本书内容由浅入深,因此建议读者按顺序阅读。在了解OpenCV的基础知识后,建议按第1章相关内容搭建开发环境并写出第1个OpenCV程序。第1个程序的顺利运行将增强读者的信心并激发学习的兴趣。第2章的内容属于基础中的基础,掌握这一章的内容对后面的学习很重要,建议不要跳过。第3章和第4章则是一些基础算法,后面不少高级算法都建立在这些算法的基础之上。
第5~11章属于进阶内容,通常会先介绍相关概念或算法原理,然后给出程序实例。对于这些章节建议读者先通读一遍,以便了解概念和原理,然后边运行程序边加深对算法的理解。
第12章和第13章涉及机器学习和视频分析等较为高级的内容,代码也会比较长。不过代码中的详细注释会帮助读者理清思路,建议读者在掌握了前面的基础算法后再学习这两章。
致谢
感谢我的家人,感谢你们一直以来对我的理解和支持!
本书的写作也得到了清华大学出版社赵佳霓编辑的大力帮助,在此深表感谢!
由于本书涉及内容广泛,加上笔者水平有限,因此难免存在疏漏之处,还请各位读者不吝批评指正。
姚利民
2023年3月
II
III
|
|