描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111601401
内容简介
本书将分为两个部分。第 一部分为基础知识,从OpenCV框架的简单介绍到OpenCV、AndroidSDK、NDK的编程应用,系统全面地介绍OpenCV在移动领域的应用、所涉及的OpenCV中的核心模块、图像处理模块、特征提取与对象检测模块等。第二部分为实战案例,包括OCR识别、人脸美颜、人眼实时跟踪与渲染。
目 录
CONTENTS
目 录
前言
部分 OpenCV图像处理系统学习篇
第1章 OpenCV Android开发框架 2
1.1 OpenCV是什么 2
1.1.1 OpenCV的历史与发展 3
1.1.2 OpenCV模块介绍 4
1.1.3 OpenCV Android SDK 5
1.2 OpenCV Android开发环境搭建 6
1.2.1 软件下载与安装 6
1.2.2 环境搭建 7
1.2.3 代码测试 13
1.3 构建演示APP 14
1.4 拍照与图像选择 18
1.5 小结 20
第2章 Mat与Bitmap对象 21
2.1 Mat对象 21
2.1.1 加载图像与读取基本信息 22
2.1.2 Mat创建与初始化 24
2.1.3 Mat对象保存 25
2.2 Android中的Bitmap对象 26
2.3 基础形状绘制与填充 29
2.4 Mat与Bitmap的使用与转换 34
2.5 小结 36
第3章 Mat像素操作 37
3.1 像素读写 37
3.2 图像通道与均值方差计算 40
3.3 算术操作与调整图像的亮度和对比度 44
3.4 基于权重的图像叠加 46
3.5 Mat的其他各种像素操作 48
3.6 小结 52
第4章 图像操作 53
4.1 模糊 53
4.2 统计排序滤波 59
4.3 边缘保留滤波 62
4.4 自定义滤波 64
4.5 形态学操作 67
4.6 阈值化与阈值 72
4.7 小结 78
第5章 基本特征检测 79
5.1 梯度计算 79
5.2 拉普拉斯算子 82
5.3 Canny边缘检测 83
5.4 霍夫直线检测 86
5.5 霍夫圆检测 89
5.6 轮廓发现与绘制 91
5.7 轮廓分析 94
5.8 图像直方图 98
5.9 模板匹配 107
5.10 小结 110
第6章 特征检测与匹配 111
6.1 Harris角点检测 111
6.2 Shi-Tomasi角点检测 114
6.3 SURF特征检测 116
6.4 SIFT特征检测 121
6.5 Feature2D中的检测器与描述子 128
6.6 特征匹配查找已知对象 134
6.7 级联分类器与人脸检测 137
6.8 小结 143
第7章 相机使用 144
7.1 使用JavaCameraView 144
7.2 横屏与竖屏显示 151
7.3 相机预览帧图像处理 153
7.4 在预览帧中实现人脸检测 155
7.5 小结 161
第二部分 OpenCV4Android应用实战
第8章 OCR识别 164
8.1 什么是OCR 164
8.2 开源OCR框架Tesseract 167
8.3 识别身份证号码 170
8.3.1 UI部分实现 171
8.3.2 号码区域查找 172
8.3.3 号码识别 174
8.4 提高OCR识别率 177
8.4.1 使用Tesseract命令行生成训练数据 177
8.4.2 图像预处理 181
8.5 小结 184
第9章 人脸美颜 185
9.1 积分图计算 185
9.2 局部均方差滤波 189
9.3 遮罩层生成 192
9.4 高斯权重融合 194
9.5 边缘提升 196
9.6 美颜实现 198
9.7 小结 204
第10章 人眼实时跟踪与渲染 205
10.1 界面显示与相机预览 205
10.2 人脸检测与跟踪 208
10.3 寻找眼睛候选区域 213
10.4 眼睛检测 214
10.5 黑眼球定位 217
10.6 渲染与优化 220
10.7 小结 222
目 录
前言
部分 OpenCV图像处理系统学习篇
第1章 OpenCV Android开发框架 2
1.1 OpenCV是什么 2
1.1.1 OpenCV的历史与发展 3
1.1.2 OpenCV模块介绍 4
1.1.3 OpenCV Android SDK 5
1.2 OpenCV Android开发环境搭建 6
1.2.1 软件下载与安装 6
1.2.2 环境搭建 7
1.2.3 代码测试 13
1.3 构建演示APP 14
1.4 拍照与图像选择 18
1.5 小结 20
第2章 Mat与Bitmap对象 21
2.1 Mat对象 21
2.1.1 加载图像与读取基本信息 22
2.1.2 Mat创建与初始化 24
2.1.3 Mat对象保存 25
2.2 Android中的Bitmap对象 26
2.3 基础形状绘制与填充 29
2.4 Mat与Bitmap的使用与转换 34
2.5 小结 36
第3章 Mat像素操作 37
3.1 像素读写 37
3.2 图像通道与均值方差计算 40
3.3 算术操作与调整图像的亮度和对比度 44
3.4 基于权重的图像叠加 46
3.5 Mat的其他各种像素操作 48
3.6 小结 52
第4章 图像操作 53
4.1 模糊 53
4.2 统计排序滤波 59
4.3 边缘保留滤波 62
4.4 自定义滤波 64
4.5 形态学操作 67
4.6 阈值化与阈值 72
4.7 小结 78
第5章 基本特征检测 79
5.1 梯度计算 79
5.2 拉普拉斯算子 82
5.3 Canny边缘检测 83
5.4 霍夫直线检测 86
5.5 霍夫圆检测 89
5.6 轮廓发现与绘制 91
5.7 轮廓分析 94
5.8 图像直方图 98
5.9 模板匹配 107
5.10 小结 110
第6章 特征检测与匹配 111
6.1 Harris角点检测 111
6.2 Shi-Tomasi角点检测 114
6.3 SURF特征检测 116
6.4 SIFT特征检测 121
6.5 Feature2D中的检测器与描述子 128
6.6 特征匹配查找已知对象 134
6.7 级联分类器与人脸检测 137
6.8 小结 143
第7章 相机使用 144
7.1 使用JavaCameraView 144
7.2 横屏与竖屏显示 151
7.3 相机预览帧图像处理 153
7.4 在预览帧中实现人脸检测 155
7.5 小结 161
第二部分 OpenCV4Android应用实战
第8章 OCR识别 164
8.1 什么是OCR 164
8.2 开源OCR框架Tesseract 167
8.3 识别身份证号码 170
8.3.1 UI部分实现 171
8.3.2 号码区域查找 172
8.3.3 号码识别 174
8.4 提高OCR识别率 177
8.4.1 使用Tesseract命令行生成训练数据 177
8.4.2 图像预处理 181
8.5 小结 184
第9章 人脸美颜 185
9.1 积分图计算 185
9.2 局部均方差滤波 189
9.3 遮罩层生成 192
9.4 高斯权重融合 194
9.5 边缘提升 196
9.6 美颜实现 198
9.7 小结 204
第10章 人眼实时跟踪与渲染 205
10.1 界面显示与相机预览 205
10.2 人脸检测与跟踪 208
10.3 寻找眼睛候选区域 213
10.4 眼睛检测 214
10.5 黑眼球定位 217
10.6 渲染与优化 220
10.7 小结 222
前 言
PREFACE前 言为什么要写这本书2015年,我出版了本图像处理方面的图书《Java数字图像处理:编程技巧与应用实践》,该书主要讲述图像处理的各种基础算法原理与代码实现,基于Java语言进行描述,没有太多的工程应用实践案例,是一本编程实践入门级的图像处理图书。因此我一直想再写一本工程实践性比较强的图书,Java与Android程序员可以通过这样的书籍,摆脱底层算法实现难的烦恼,快速学习相关API的使用,掌握常见的图像处理技术,快速开发应用,上手计算机视觉应用开发;他们通过学习与参照书中的工程实践案例,可以解决实际需求,提升个人竞争力,为企业和个人在短时间内创造更大的价值。
OpenCV作为一款开源的计算机视觉框架,封装了超过1000个常见的图像处理算法,其SDK语言支持Java、C++、Python等。借助人工智能兴起的东风,近几年OpenCV开发者社区的发展非常迅速,人数成几何级递增,而且已经对Android系统有了良好的支持与完备的SDK开发接口。在无须了解底层算法实现的情况下,借助OpenCV提供的SDK,Android开发者可以实现OCR识别、图像处理、人脸检测、相机校正、实时视频分析与处理、AR增强等移动端应用开发。
对大多数Android开发者来说,OpenCV与计算机视觉应用开发都可能显得有点陌生,因为市面上缺乏专业的工程性书籍与文档,OpenCV社区对Android SDK本身也没有提供完善的API文档与代码演示,这让很多Android程序员无法顺利使用OpenCV框架在移动端开发计算机视觉相关的应用。本书系统性地讲述OpenCV如何在Android系统上应用开发与工程实践,撰写本书的时候,因为OpenCV的很多API调用参数缺少文档说明,因此笔者需要通过编程实践一点一点全部尝试之后再总结出来,用实践出真知来形容本书一点也不过分。笔者本人是个地道的程序员,特别理解和了解程序员的视角与工程应用的重点和难点,本书从程序员的视角出发,在思路分析与代码实现上,对每个案例都做了非常清楚的交代与解释,对不同算法函数的应用场景都有详细的代码演示。本书后三个案例分别涉及OCR识别、人脸美颜算法、视频检测与跟踪渲染这些实际落地场景,这三个案例是笔者本人精心挑选的,涵盖了大多数Android开发者的工程实践需求与工作需要,力求做到尽善尽美,然“人无完人,金无足赤”,终还需读者评价。
如果说我的本书是对我十年工作的总结,那么本书就是我十年之后再出发的征途起点,“远飞者当换其新羽”,对广大Android与Java程序员来说,处在人工智能时代,掌握前沿技术,更新自己的技术栈,提升个人竞争力,计算机视觉与OpenCV就是个很好的方向与选择。作为技术人员唯有鼎故革新、砥砺前行,才能不负这个好的时代,本书也是献给广大Android与Java程序员好的礼物。
后,希望通过本书的知识和作者有限的经验,帮助广大Android与Java程序员,以及众多有志于从事计算机视觉的后来者,借助OpenCV框架走上计算机视觉应用开发的道路。本书的顺利出版离不开笔者对OpenCV与计算机视觉技术的兴趣,更离不开笔者的毅力与本书写作初衷。希望本书能为国内OpenCV框架使用的普及与应用开发实践尽绵薄之力,若能如愿也不枉我的一番努力。
读者对象本书适合于以下读者对象。
广大Android与Java程序员。
从事图像处理的工作者。
学习图像处理的爱好者。
希望提升自我的中高级程序员。
计算机专业高年级本科生或者研究生。
从事图像处理行业的公司与个人。
开设图像处理相关课程的大专院校学生。
如何阅读本书本书共分为两大部分,其中部分为第1章到第7章,系统地介绍了OpenCVAndroid的开发框架及功能。第二部分是本书的案例部分,系统全面地分析了三个实际案例,讲解如何借助OpenCV框架解决实际问题。如果你已经对Java语言和Android系统上的SDK开发有基本的认识,那么可以直接开始阅读本书,书中的源代码也是本书的一部分,建议在阅读本书内容的同时,尝试运行与修改本书提供的源代码,这样有助于更加深刻地理解与之相关的API参数与算法应用场景。
部分为基础篇,由浅入深,从OpenCV框架的简单介绍到OpenCV与Android SDK、NDK的编程应用,系统全面地介绍了OpenCV在移动领域的应用、OpenCV中的核心模块、图像处理模块、特征提取与对象检测模块等。读者在学习与掌握OpenCV 相关API用法的前提下可以学习第二部的实战案例。
第二部分为实战案例部分,由OCR识别、人脸美颜、人眼实时跟踪与渲染三个典型案例组成。通过案例学习,读者将学会如何设计算法流程、使用组合算法API、关注应用的性能与内存问题,以及NDK开发技巧、其他图像处理开发相关API的使用技巧。
此外,本书的源文件可到www.hzbook.com上搜索本书书名下载,或者到Github上下载本书演示工程,网址为https://github.com/gloomyfish1998/opencv4android/tree/master/samples/OpencvDemo。
本书参考资料也可从Github上下载,网址为https://github.com/gloomyfish1998/opencv4android。
勘误和支持由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错
OpenCV作为一款开源的计算机视觉框架,封装了超过1000个常见的图像处理算法,其SDK语言支持Java、C++、Python等。借助人工智能兴起的东风,近几年OpenCV开发者社区的发展非常迅速,人数成几何级递增,而且已经对Android系统有了良好的支持与完备的SDK开发接口。在无须了解底层算法实现的情况下,借助OpenCV提供的SDK,Android开发者可以实现OCR识别、图像处理、人脸检测、相机校正、实时视频分析与处理、AR增强等移动端应用开发。
对大多数Android开发者来说,OpenCV与计算机视觉应用开发都可能显得有点陌生,因为市面上缺乏专业的工程性书籍与文档,OpenCV社区对Android SDK本身也没有提供完善的API文档与代码演示,这让很多Android程序员无法顺利使用OpenCV框架在移动端开发计算机视觉相关的应用。本书系统性地讲述OpenCV如何在Android系统上应用开发与工程实践,撰写本书的时候,因为OpenCV的很多API调用参数缺少文档说明,因此笔者需要通过编程实践一点一点全部尝试之后再总结出来,用实践出真知来形容本书一点也不过分。笔者本人是个地道的程序员,特别理解和了解程序员的视角与工程应用的重点和难点,本书从程序员的视角出发,在思路分析与代码实现上,对每个案例都做了非常清楚的交代与解释,对不同算法函数的应用场景都有详细的代码演示。本书后三个案例分别涉及OCR识别、人脸美颜算法、视频检测与跟踪渲染这些实际落地场景,这三个案例是笔者本人精心挑选的,涵盖了大多数Android开发者的工程实践需求与工作需要,力求做到尽善尽美,然“人无完人,金无足赤”,终还需读者评价。
如果说我的本书是对我十年工作的总结,那么本书就是我十年之后再出发的征途起点,“远飞者当换其新羽”,对广大Android与Java程序员来说,处在人工智能时代,掌握前沿技术,更新自己的技术栈,提升个人竞争力,计算机视觉与OpenCV就是个很好的方向与选择。作为技术人员唯有鼎故革新、砥砺前行,才能不负这个好的时代,本书也是献给广大Android与Java程序员好的礼物。
后,希望通过本书的知识和作者有限的经验,帮助广大Android与Java程序员,以及众多有志于从事计算机视觉的后来者,借助OpenCV框架走上计算机视觉应用开发的道路。本书的顺利出版离不开笔者对OpenCV与计算机视觉技术的兴趣,更离不开笔者的毅力与本书写作初衷。希望本书能为国内OpenCV框架使用的普及与应用开发实践尽绵薄之力,若能如愿也不枉我的一番努力。
读者对象本书适合于以下读者对象。
广大Android与Java程序员。
从事图像处理的工作者。
学习图像处理的爱好者。
希望提升自我的中高级程序员。
计算机专业高年级本科生或者研究生。
从事图像处理行业的公司与个人。
开设图像处理相关课程的大专院校学生。
如何阅读本书本书共分为两大部分,其中部分为第1章到第7章,系统地介绍了OpenCVAndroid的开发框架及功能。第二部分是本书的案例部分,系统全面地分析了三个实际案例,讲解如何借助OpenCV框架解决实际问题。如果你已经对Java语言和Android系统上的SDK开发有基本的认识,那么可以直接开始阅读本书,书中的源代码也是本书的一部分,建议在阅读本书内容的同时,尝试运行与修改本书提供的源代码,这样有助于更加深刻地理解与之相关的API参数与算法应用场景。
部分为基础篇,由浅入深,从OpenCV框架的简单介绍到OpenCV与Android SDK、NDK的编程应用,系统全面地介绍了OpenCV在移动领域的应用、OpenCV中的核心模块、图像处理模块、特征提取与对象检测模块等。读者在学习与掌握OpenCV 相关API用法的前提下可以学习第二部的实战案例。
第二部分为实战案例部分,由OCR识别、人脸美颜、人眼实时跟踪与渲染三个典型案例组成。通过案例学习,读者将学会如何设计算法流程、使用组合算法API、关注应用的性能与内存问题,以及NDK开发技巧、其他图像处理开发相关API的使用技巧。
此外,本书的源文件可到www.hzbook.com上搜索本书书名下载,或者到Github上下载本书演示工程,网址为https://github.com/gloomyfish1998/opencv4android/tree/master/samples/OpencvDemo。
本书参考资料也可从Github上下载,网址为https://github.com/gloomyfish1998/opencv4android。
勘误和支持由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错
评论
还没有评论。