《Java图像处理:基于OpenCV与JVM》
华章程序员书库
Java图像处理:
基于OpenCV与JVM
Java Image Processing Recipes: With OpenCV and JVM
[法] 尼古拉斯·莫德奇克(Nicolas Modrzyk) 著
魏 兰 潘婉琼 译
译者序
计算机视觉是在计算机技术、生物视觉系统、神经科学以及感知心理学等学科基础上发展起来的学科。近年来,随着机器学习技术的大力发展,以及计算机本身算力的提高,越来越多的计算机视觉问题得以解决并大规模应用,如图像检索、人脸识别、文字识别、自动驾驶等。计算机视觉技术在无形中扩展了我们探索物质世界边界的能力,并潜移默化地变革着我们的生活方式。
OpenCV作为开放的计算机视觉源代码库,逐步成为一个通用的基础研究和产品开发平台,它不仅提供了许多前沿的图像视频处理算法,同时最大限度地进行跨平台支持,让每个对计算机视觉感兴趣的学生、科研人员以及应用开发人员参与其中。越来越多的优秀研发人员自发投身于OpenCV的开发和维护工作中,并致力于OpenCV的推广,有关OpenCV的书籍也如雨后春笋,日益繁多。权威广博如《Learning OpenCV 3》,结合视觉算法原理介绍OpenCV函数约定及正确的使用方法;生动有趣如《Mastering OpenCV with Practical Computer Vision Projects》以及《OpenCV 2 Computer Vision Application Programming Cookbook》,通过实践探索计算机视觉的应用开发;独树一帜如《Learning OpenCV3 Computer Vision with Python》,介绍基于Python的快速上手实践。而本书无疑是对基于JVM的OpenCV实践的有力补充。本书介绍了使用Java、Scala和Kotlin在JavaVM上运行OpenCV,随后引入Clojure语言的OpenCV封装——Origami,并提供了各种纷繁有趣的实践项目。读者可以依次学习这些小项目,也可以直接跳到感兴趣的章节,更可以充分发挥你的想象力,将学到的内容应用于日常生活中,如马赛克拼图、实时视频检测等。
学以致用,实践出真知,相信本书的问题和样例会有助于你快速应用计算机视觉的诸多算法。
本书的翻译工作由我和潘婉琼合作完成,我们穿插着完成了每章不同节的翻译,最后共同进行了终稿的合并以及审校。在翻译过程中,我们力求忠实原文。但限于译者的知识水平、翻译经验和翻译时间,必定会有诸多不足,恳请广大读者谅解。
最后,祝愿所有读者能够在阅读和实践中享受本书带来的乐趣!
魏兰
2019年1月于北京
前 言
我的父亲是一名牙科医生。在我的记忆里,童年时期父亲曾经一遍又一遍地重复同一句话,现在翻译过来应该是:
“儿子,工欲善其事,必先利其器。”
当他看着我试图用错误的洗涤产品事倍功半地洗车时,在内心深处我是认可他的这句话的。
我的父亲不会用螺丝刀从患者口中拔牙,相反,他用20多种形状各异的刷子去清洗不同类型的牙齿,当时我还觉得这是很搞笑的事情。
时光飞逝,30年后,我和父亲谈起这本书,他补充道:
“嗯,儿子,你知道,这不仅仅是关于工利其器,而且是关于对的时间选择对的利器。”
我想这基本可以作为对本书哲学观的总结。
作为计算机视觉库,OpenCV一直被广泛应用于各种图像和视频相关的项目中,更在推动人工智能和神经网络的发展中发挥了重要作用。但是学习和使用OpenCV并不简单,总是需要些时间选择合适的类库、合适的编译工具、合适的编译配置等。
由Clojure封装Origami的愿景是用令人愉悦的语法,直截了当地发挥OpenCV的巨大威力。我希望这样能帮助你集中更多的时间和精力在项目本身而非工具上。
第1章将介绍使用Java、Scala和Kotlin在Java虚拟机(JVM)上运行OpenCV,同时介绍它们的一些缺点。
第2章将介绍使用Clojure语言的OpenCV封装——Origami,同时介绍如何使用它进行简单的图像操作。
第3章将用优雅的语法介绍更多先进的图像处理技术,如形状检测等。
第4章转向视频处理,结合形状检测、图像变换等各种技术对实时视频进行简单的分析。
作者简介
Nicolas Modrzyk目前是Karabiner Software的首席技术官和开发团队的领导者。
他还是开源软件社区的活跃贡献者。作为开发人员和技术顾问,他多年来一直在一家视频会议公司参与设计大型服务器应用程序,通过从零开始编写高性能中间件来管理庞大的数据库集群,使日本领导者能够使用内容管理和流程管理系统,并为亚洲领先公司拓宽了业务流程的界限。
他也是敏捷方法的热情倡导者,专注于及时完成工作以满足客户需求。他还喜欢鼓励朋友和团队成员挑战自我并实现目标。他在不同国家拥有专利授权收入,包括法国、美国、爱尔兰、日本、中国和印度。他还是其他几本有关Clojure编程语言的书的作者,这些书以英语和日语出版。
他目前居住在日本东京,在那里他常常利用业余时间踢足球、徒步旅行、在现场音乐会演奏吉他,并与朋友和同事一起享受生活。
技术审校者简介
Aakash Kag是Manacola Private公司的人工智能开发人员。他有两年大数据分析工作经验,是一名计算机科学专业的研究生,专业方向是大数据分析。Aakash曾开发过微软机器人。
目前,Aakash致力于解决有关聊天机器人和自然语言理解方面的难题。
他热衷于参加机器学习交流会,而且经常在交流会上发表演讲。
目 录
译者序
前言
作者简介
技术审校者简介
第2章 OpenCV和Origami/ 58
2.1 开始Origami编程/ 59
2.2 使用矩阵/ 73
2.3 载入、显示、保存矩阵/ 80
2.4 使用颜色、颜色映射和颜色空间/ 85
2.5 旋转和变换矩阵/ 95
2.6 滤波矩阵/ 102
2.7 应用简单掩膜技术/ 110
2.8 模糊图像/ 114
第3章 图像处理技术/ 119
3.1 玩转颜色/ 120
3.2 制作卡通效果/ 137
3.3 制作铅笔素描效果/ 143
3.4 制作画布效果/ 149
3.5 高亮显示线条和圆圈/ 152
3.6 查找、绘制轮廓和边界/ 160
3.7 轮廓进阶:玩转形状/ 168
3.8 移动形状/ 174
3.9 树问题/ 177
3.10 检测模糊/ 180
3.11 制作马赛克拼贴图像/ 182
第4章 实时视频/ 188
4.1 初探视频流/ 189
4.2 整合多个视频流/ 194
4.3 扭曲视频/ 196
4.4 使用人脸识别/ 198
4.5 图像差值/ 201
4.6 运动检测/ 204
4.7 使用Grabcut分离前景和背景/ 208
4.8 实时检测橙子/ 214
4.9 视频流中的图像检测/ 218
- 点赞
- 收藏
- 关注作者
评论(0)