《Java图像处理:基于OpenCV与JVM》

举报
华章计算机 发表于 2020/02/20 19:12:39 2020/02/20
【摘要】 本节书摘来自华章计算机《Java图像处理:基于OpenCV与JVM》 —— 作者是[法] 尼古拉斯·莫德奇克(Nicolas Modrzyk) ,魏 兰 潘婉琼 译 。

华章程序员书库

Java图像处理:

基于OpenCV与JVM

Java Image Processing Recipes: With OpenCV and JVM

1582196925727371.jpg

[法] 尼古拉斯·莫德奇克(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致力于解决有关聊天机器人和自然语言理解方面的难题。

他热衷于参加机器学习交流会,而且经常在交流会上发表演讲。

 

 

 

 

目 录


译者序

前言

作者简介

技术审校者简介

第1章 基于JavaVM的OpenCV/ 1

1.1 初识Leiningen/ 2

1.2 编写你的第一个OpenCV Java程序/ 7

1.3 自动编译和运行代码/ 9

1.4 使用更好的文本编辑器/ 11

1.5 学习OpenCV矩阵对象基础知识/ 15

1.6 从文件加载图像/ 17

1.7 保存图像到文件/ 20

1.8 利用子矩阵修剪图像/ 22

1.9 从子矩阵生成矩阵/ 25

1.10 高亮显示图像中的物体/ 29

1.11 使用Canny结果作为掩膜/ 32

1.12 使用轮廓进行边缘检测/ 34

1.13 处理视频流/ 37

1.14 用Scala写OpenCV代码/ 41

1.15 用Kotlin写OpenCV代码/ 46

第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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。