内容简介
《Android OpenCV应用程序设计》详细阐述了与Android OpenCV程序设计相关的基本解决方案,主要包括构建OpenCV,与相机帧协同工作,添加图像效果,图像识别和跟踪,图像跟踪与3D渲染之间的整合操作等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
《Android OpenCV应用程序设计》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
Copyright Packt Publishing 2013.First published in the English language under the title
Android Application Programming with OpenCV.
Simplified Chinese-language edition 2014 by Tsinghua University Press.All rights reserved.
本书中文简体字版由Packt Publishing授权清华大学出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
作者简介
本书讲解了如何在Android应用程序中绑定OpenCV的Java内容,进而显示相机画面、保存-共享照片、操控颜色和轮廓边以及跟踪2D或3D中的对象。另外,本书还讨论了OpenGL的整合方式,读者可据此构建增强现实(AR)程序,进而在相机画面的跟踪对象上绘制虚拟3D场景。
作为一类开源、跨平台库,OpenCV提供了计算机视觉和应用构建模块,以及针对捕捉处理和图像数据显示的高层接口。例如,OpenCV抽象了相机硬件的细节内容以及数组的内存分配。同时,OpenCV广泛地应用于教学和软件工业中。
Android则是一类开源移动操作系统,对于Java开发者而言,它提供了称作Android SDK的高层应用框架。Android应用程序是一类模块化程序,并针对数据的发布和共享定义了标准的高层接口。针对照片共享应用,移动、高层抽象和数据共享可视为较好的开始点。
虽然OpenCV和Android提供了大量的高层抽象内容(以及开源代码),但对于初学者而言并不容易掌握,例如构建适宜的开发环境,将库功能项移至应用程序中。对此,本书旨在强调清晰的构建过程、简洁的应用设计以及各功能项的详细内容。
鉴于OpenCV的Java和Android绑定尚为新鲜事物,因而其文档并不完整,针对OpenCV与Android的标准相机、媒介以及图形API尤其如此。需要说明的是,整合工作是应用程序开发者的重要任务之一,也是本书的讲解重点。
OpenCV和Android库之间的整合过程充分体现了广泛的应用程序特征,本书结束时将会对此予以尝试。届时,读者可通过可复用的类库扩展或调整后续的计算机视觉项目,并根据已有的开发环境和知识编写更为丰富的应用程序。
本书内容
第1章讨论OpenCV和Android开发环境的构建过程,其中包括Eclipse和Android SDK。
第2章讨论OpenCV与Android应用程序之间的整合方式,进而预览、捕捉、保存和共享照片数据。
第3章探讨OpenCV的功能项,包括颜色通道的控制以及邻接像素问题。除此之外,还将对现有应用程序进行扩展,以使其包含通道混合滤镜、"曲线"滤镜和黑色轮廓边滤镜。
第4章将展示视频画面中既定目标对象(例如油画作品)的识别和跟踪机制。同时,还将对已有应用程序进行适当扩展,并围绕跟踪目标绘制轮廓线。
第5章通过确定3D环境中目标的位置和旋转改善前述跟踪机制。另外,本章还将构建OpenGL 3D场景,并包含与Android相机设备相同的透视视角。
背景知识
本书将讨论OpenCV和Android开发环境的构建过程,其中包括Eclipse和Android SDK。同时,对应软件均包含跨平台特征,包括Windows、Mac、Linux以及其他类UNIX环境。
读者需要持有一部可运行Android 2.2(Froyo)或后续版本的移动设备,并建议设备包含前置和后置相机。另外,鉴于OpenCV使用Google Play Store管理安装和共享库的更新操作,因而推荐安装Google Play Store应用程序。
本书读者
本书适用于Java开发人员,以及致力于计算机视觉应用开发的读者。本书假设读者具备一定的Java开发经验(但缺乏相应的Android知识),并对图形数据有着基本的理解,例如像素、颜色通道等内容。
本书结构
本书包含了大量不同的文本风格,并以此区分不同种类的信息。下列内容展示了相应的文本风格和对应的解释内容。
文本中的代码字样通常显示为:"编辑系统路径PATH并包含/platform- tools和/tools"。
对应代码块如下所示:
"http://schemas.android.com/apk/res/android"
package="com.nummist.secondsight"
android:versionCode="1"
android:versionName="1.0">
当强调特定的代码段时,相关内容采用粗体表示,如下所示:
mCameraView.enableView();
mBgr = new Mat();
mCurveFilters = new Filter[] {
new NoneFilter(),
new PortraCurveFilter(),
new ProviaCurveFilter(),
命令行输入和输出如下所示:
$ cd /etc/udev/rules.d/
$ sudo touch 51-android.rules
$ sudo chmod a+r 51-android-rules
另外,某些新增内容和重要内容也采用粗体表示,而屏幕、菜单或对话框中的文本则采用原文显示,例如"clicking on the Next button moves you to the next screen"。
最后,"提示"表示一些较为重要的提示;"技巧"则表示相关的操作技巧。
读者反馈和技术支持
欢迎读者对本书的建议或意见予以反馈,以进一步了解读者的阅读喜好。反馈意见对于我们来说十分重要,以便改进我们日后的工作。
对此,读者可向feedback@packtpub.com发送邮件,并以书名作为邮件标题。
若读者意欲查询出版信息,可在www.packtpub.com网站的SUGGEST A TITLE表项中填写相关信息,或发送邮件至suggest@packtpub.com。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可阅读www.packtpub.com/authors中的author guide一栏。
资源下载
读者可访问http://www.packtpub.com下载本书中的示例代码文件;或者访问http://www. packtpub.com/support,经注册后可直接通过邮件方式获取相关文件。
除此之外,读者还可访问作者网站http://nummist.com/opencv/下载本书示例代码。
勘误表
尽管我们在最大程度上做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误或是代码错误,还望不吝赐教。对于其他读者以及本书的再版工作,这将具有十分重要的意义。对此,读者可访问http://www.packtpub.com/support,选取对应书籍,单击errata submission form超链接,并输入相关问题的详细内容。经确认后,填写内容将被提交至网站,或添加至现有勘误表中(位于该书籍的Errata部分)。同时,读者还可访问http://www.packtpub.com/support查看当前勘误表。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知网络地址或网站名称,我们将对此予以处理。
关于盗版问题,读者可发送邮件至copyright@packtpub.com。对于作者的爱护,我们表示衷心的感谢,并于日后向读者呈现更为精彩的作品。
问题解答
若读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为您服务;或者访问作者网站http://nummist.com/opencv/获取常见问题的答案。
本书作者和审校人员
Joseph Howse很可能现在正坐在家中的沙发上撰写某本书籍,或者拎着手提箱处于奔波途中,箱子中被书籍、相机和计算机等设备填满。Joseph Howse喜欢用这种"观察世界的方式"装备自己,要不就是在执行计算机视觉方面的工作。
Joseph Howse在加拿大的Ad-Dispatch公司工作,并负责iOS和Android平台的增强现实游戏的开发工作。当与计算机视觉协同工作时,游戏中使用了大量的真实道具,例如孩子的绘画作品、玩具和毛毯。
另外,Joseph Howse还提供培训和咨询等服务,其中包括基于OpenCV人脸识别的嵌入式系统项目。
Joseph Howse拥有计算机科学专业、国际发展研究专业以及商务管理专业3个硕士学位(加拿大Dalhousie大学),其研究成果曾被ISMAR发表。
本书是Joseph Howse在Packt出版社出版的第二本书籍,另外一本是《OpenCV Computer Vision with Python》,该书介绍了Windows、Mac以及Linux操作系统上的脸部跟踪和深度相机(例如Kinect)等内容。
下面一段文字引自Joseph Howse:
"我擅长写作并享受这一过程。这里要感谢和Sam在一起的日子,以及父母和我的猫咪,他们是我的精神支柱。"
"感谢本书的编辑和审校人员,在他们的指导下本书方得以出版。他们的专业、友好、良好的判断力以及热忱为本书增加了极大的色彩。"
Rohit Bhat是一名毕业于印度BITS Pilani的本科生,并在业界领先的Big Data Analytics公司担任软件工程师一职。他所参与的开发项目涉及多种科技领域,其中包括数据挖掘、Android开发、OpenCV、群集智能、工作流自动化以及视频会议平台。Rohit Bhat热衷于最新技术,并可就任何话题与你展开讨论。另外,阅读、创业、经济学以及时下的新闻同样是他关注的话题。他热爱写作并在业余时间撰写自己的博客。
当前,Rohit Bhat正在为Packt出版社编写一本Bonita Open Solution方面的书籍,相关技术广泛地应用于工作流自动化和商业处理建模中。
Viral Parekh是一名计算机科学专业的大学生,同时也是一名经验丰富的移动应用程序开发者,并熟悉多种开源库,例如OpenCV、OpenNI、FFmpeg。当前,他从事于人机交互和增强现实方面的开发工作。
目录
第1章 构建OpenCV 1
1.1 系统需求 2
1.2 构建开发环境 2
1.3 获取现有的开发环境--Tegra Android开发包(TADP) 2
1.4 逐个整合安装环境 4
1.5 获取预制版本的OpenCV4Android 6
1.6 构建源OpenCV 7
1.7 基于Eclipse构建OpenCV示例 8
1.8 查看文档和帮助文件 18
1.9 本章小结 19
第2章 与相机帧协同工作 20
2.1 设计Second Sight应用程序 20
2.2 创建Eclipse项目 22
2.3 开启相机和磁盘访问功能 25
2.4 创建菜单和字符串资源 27
2.5 在CameraActivity中预览和保存照片 29
2.6 删除、编辑和共享LabActivity中的照片 40
2.7 本章小结 44
第3章 添加图像效果 45
3.1 向当前项目中添加文件 45
3.2 定义滤镜接口 47
3.3 混合颜色通道 47
3.4 曲线色移 50
3.5 使用卷积过滤处理邻接像素 56
3.6 向CameraActivity中加入滤镜 58
3.7 本章小结 64
第4章 图像识别和跟踪 65
4.1 向当前项目中添加文件 65
4.2 理解图像追踪 66
4.3 编写图像跟踪滤镜 67
4.4 向CameraActivity中加入跟踪滤镜 74
4.5 本章小结 80
第5章 图像跟踪与3D渲染之间的整合操作 81
5.1 向项目中添加文件 81
5.2 定义ARFilter接口 82
5.3 在CameraProjectionAdapter中构建投影矩阵 83
5.4 针对3D跟踪调整ImageDetectionFilter 87
5.5 在ARCubeRenderer中绘制立方体 92
5.6 将3D跟踪和渲染添加至CameraActivity中 97
5.7 Android图形学的更多内容 101
5.8 本章小结 102
前言/序言
Android OpenCV应用程序设计 下载 mobi epub pdf txt 电子书 格式