本书讲解了如何在Android应用程序中绑定OpenCV的Java内容,进而显示相[1机1]画[mian]、保存-共享照片、[*]控颜色和轮廓边以及跟踪2D或3D中的对象。另外,本书还讨论了OpenGL的整合方式,读者可据此构建增强现实(AR)程序,进而在相[1机1]画[mian]的跟踪对象上绘制虚拟3D场景。 作为一类开源、跨平台库,OpenCV[扌是]供了计算[1机1]视觉和应用构建模块,以及针对捕捉处理和图像数据显示的高层接口。例如,OpenCV抽象了相[1机1]硬[亻牛]的细节内容以及数组的内存分配。同时,OpenCV广泛地应用于教[0学0]和软[亻牛]工业中。 Android则是一类开源移动[*]作系统,对于Java开发者而言,它[扌是]供了称作Android SDK的高层应用框架。Android应用程序是一类模块化程序,并针对数据的发布和共享定义了标准的高层接口。针对照片共享应用,移动、高层抽象和数据共享可视为较[女子]的开始点。 虽然OpenCV和Android[扌是]供了[0大0]量的高层抽象内容(以及开源代码),但对于初[0学0]者而言并不容易掌握,例如构建适宜的开发环境,将库功能项移至应用程序中。对此,本书旨在强调清晰的构建过程、简洁的应用设计以及各功能项的详细内容。 鉴于OpenCV的Java和Android绑定尚为[亲斤]鲜事物,因而其文档并不完整,针对OpenCV与Android的标准相[1机1]、媒介以及图形API尤其如此。需要说明的是,整合工作是应用程序开发者的重要任务之一,也是本书的讲解重点。 OpenCV和Android库之间的整合过程充分体现了广泛的应用程序特征,本书结束时将[0会0]对此予以尝试。届时,读者可通过可复用的类库扩展或调整后续的计算[1机1]视觉项目,并根据已有的开发环境和[0知0]识编写更为丰富的应用程序。 本书内容 [0第0]1章讨论OpenCV和Android开发环境的构建过程,其中包括Eclipse和Android SDK。 [0第0]2章讨论OpenCV与Android应用程序之间的整合方式,进而预览、捕捉、保存和共享照片数据。 [0第0]3章探讨OpenCV的功能项,包括颜色通道的控制以及邻接像素问题。除此之外,还将对现有应用程序进行扩展,以使其包含通道混合滤镜、"曲线"滤镜和黑色轮廓边滤镜。 [0第0]4章将展示视频画[mian]中既定目标对象(例如油画作[0品0])的识别和跟踪[1机1]制。同时,还将对已有应用程序进行适[0当0]扩展,并围绕跟踪目标绘制轮廓线。 [0第0]5章通过确定3D环境中目标的位置和旋转改善前述跟踪[1机1]制。另外,本章还将构建OpenGL 3D场景,并包含与Android相[1机1]设备相同的透视视角。 背景[0知0]识 本书将讨论OpenCV和Android开发环境的构建过程,其中包括Eclipse和Android SDK。同时,对应软[亻牛]均包含跨平台特征,包括Windows、Mac、Linux以及其他类UNIX环境。 读者需要持有一部可运行Android 2.2(Froyo)或后续版本的移动设备,并建议设备包含前置和后置相[1机1]。另外,鉴于OpenCV使用Google Play Store管理安装和共享库的更[亲斤][*]作,因而推荐安装Google Play Store应用程序。 本书读者 本书适用于Java开发人员,以及致力于计算[1机1]视觉应用开发的读者。本书[jia]设读者具备一定的Java开发[纟巠]验(但缺乏相应的Android[0知0]识),并对图形数据有着基本的理解,例如像素、颜色通道等内容。 本书结构 本书包含了[0大0]量不同的文本风格,并以此区分不同种类的信息。下列内容展示了相应的文本风格和对应的解释内容。 文本中的代码字样通常显示为:"编辑系统路径PATH并包含/platform- tools和/tools"。 对应代码块如下所示: "http://schemas.android.com/apk/res/android" package="com.nummist.secondsight" android:versionCode="1" android:versionName="1.0"> [0当0]强调特定的代码段时,相关内容采用粗体表示,如下所示: mCameraView.enableView(); mBgr = new Mat(); mCurveFilters = new Filter[] { new [0No0]neFilter(), new PortraCurveFilter(), new ProviaCurveFilter(), 命令行输入和输出如下所示:
|