OpenCV Android开发实战
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

2015年,我出版了第一本图像处理方面的图书《Java数字图像处理:编程技巧与应用实践该书由机械工业出版社出版,书号为ISBN 978-7-111-51946-1。——编辑注,该书主要讲述图像处理的各种基础算法原理与代码实现,基于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章,系统地介绍了OpenCV Android的开发框架及功能。第二部分是本书的案例部分,系统全面地分析了三个实际案例,讲解如何借助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

勘误和支持

由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,不妥之处在所难免,恳请读者批评指正。笔者已经把本书配套的源代码上传到Github,访问地址为https://github.com/gloomyfish1998/opencv4android/tree/master/samples/OpencvDemo,如果有读者想直接提交勘误代码,请先邮件联系笔者,笔者同意以后即可提交,同时笔者也会根据读者反馈更新源代码,所以在阅读本书之前请先从Github上获取最新的配套源代码。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱57558865@qq.com,很期待听到你们的真挚反馈。

致谢

OpenCV能有今天的发展,首先要感谢英特尔当时的开源决策,其次是OpenCV社区的巨大贡献,我第一次接触OpenCV就被它的开发效率吸引住了,可以说OpenCV是计算机视觉应用开发最好用的工具之一,特别是OpenCV3.0以后的版本,非常容易学习,所以要感谢那些为OpenCV做出过贡献的杰出开发者。在我写作本书的时候,机械工业出版社华章公司的编辑杨绣国老师一直没有向我催稿,反而告诉我要安心创作,认真细致,后期审稿的时候也是逐字逐句推敲,反复修改,感谢你的耐心与严谨,正是你的鼓励、帮助和支持引导我顺利完成本书撰写。

最后感谢我的爸爸、妈妈,感谢你们给予我生命,将我培养成人,感谢我的妻子在我写书的这一年多时间里让我从家务中解脱,给予我支持与鼓励。

谨以此书,献给我最亲爱的两个孩子,以及众多热爱OpenCV编程的朋友。

贾志刚

中国,苏州,2018年3月