OpenCV3编程入门
2015年电子工业出版社出版的图书
《OpenCV3编程入门》是2015年电子工业出版社出版的图书,作者是毛星云、冷雪飞、王碧辉、吴松森。
内容简介
OpenCV在计算机视觉领域扮演着重要的角色。作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理计算机视觉方面的很多通用算法。《OpenCV3编程入门》以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个详细注释的程序源代码与思路说明。读者可以按图索骥,按技术方向进行快速上手和深入学习。
《OpenCV3编程入门》要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员。《OpenCV3编程入门》也适合于图像处理、计算机视觉领域的业余爱好者、开源项目爱好者做为通向新版OpenCV的参考手册之用。
《OpenCV3编程入门》配套的【示例程序】、【.exe可执行文件】、【书内彩图】的下载链接可通过扫描《OpenCV3编程入门》封底后勒口的二维码获取。
OpenCV3编程入门(细致分析OpenCV编程技巧,深入了解最前沿的计算机视觉编程技术)
本书站在浪潮之巅,零距离接触最前沿的计算机视觉编程技术
全面涵盖OpenCV2、OpenCV3双版本的核心编程技巧
附赠OpenCV2、OpenCV3双版本总计200余个配套示例程序源代码
内容提要
OpenCV在计算机视觉领域扮演着重要的角色。作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法。《OpenCV3编程入门》以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个详细注释的程序源代码与思路说明。读者可以按图索骥,按技术方向进行快速上手和深入学习。
《OpenCV3编程入门》要求读者具有基础的C/C++知识,适合研究计算机视觉以及相关领域的在校学生和老师、初次接触OpenCV但有一定C/C++编程基础的研究人员,以及已有过OpenCV 1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员。《OpenCV3编程入门》也适合于图像处理、计算机视觉领域的业余爱好者、开源项目爱好者做为通向新版OpenCV的参考手册之用。
《OpenCV3编程入门》配套的【示例程序】、【.exe可执行文件】、【书内彩图】的下载链接可通过扫描《OpenCV3编程入门》封底后勒口的二维码获取。
图书目录
第一部分 快速上手OpenCV 1
第1章 邂逅OpenCV 3
1.1 OpenCV周边概念认知 4
1.1.1 图像处理、计算机视觉与OpenCV 4
1.1.2 OpenCV概述 4
1.1.3 起源及发展 5
1.1.4 应用概述 6
1.2 OpenCV基本架构分析 7
1.3 OpenCV3带来了什么 11
1.3.1 项目架构的改变 11
1.3.2 将OpenCV2代码升级到OpenCV3报错时的一些策略 12
1.4 OpenCV的下载、安装与配置 14
1.4.1 预准备:下载和安装集成开发环境 14
1.4.2 第一步:下载和安装OpenCV SDK 15
1.4.3 第二步:配置环境变量 16
1.4.4 第三步:工程包含(include)目录的配置 17
1.4.5 第四步:工程库(lib)目录的配置 21
1.4.6 第五步:链接库的配置 22
1.4.7 第六步:在Windows文件夹下加入OpenCV动态链接库 25
1.4.8 第七步:最终测试 26
1.4.9 可能遇到的问题和解决方案 27
1.5 快速上手OpenCV图像处理 28
1.5.1 第一个程序:图像显示 29
1.5.2 第二个程序:图像腐蚀 30
1.5.3 第三个程序:图像模糊 31
1.5.4 第四个程序:canny边缘检测 32
1.6 OpenCV视频操作基础 34
1.6.1 读取并播放视频34
1.6.2 调用摄像头采集图像 35
1.7 本章小结 38
第2章 启程前的认知准备 39
2.1 OpenCV官方例程引导与赏析 40
2.1.1 彩色目标跟踪:Camshift 41
2.1.2 光流:optical flow 42
2.1.3 点追踪:lkdemo 43
2.1.4 人脸识别:objectDetection 43
2.1.5 支持向量机引导 44
2.2 开源的魅力:编译OpenCV源代码 45
2.2.1 下载安装CMake 45
2.2.2 使用CMake生成OpenCV源代码工程的解决方案 46
2.2.3 编译OpenCV源代码 50
2.3 “opencv.hpp”头文件认知 53
2.4 命名规范约定 54
2.5 argc与argv参数解惑 56
2.5.1 初识main函数中的argc和argv 56
2.5.2 argc、argv的具体含义 57
2.5.3 Visual Studio中main函数的几种写法说明 58
2.5.4 总结 59
2.6 格式输出函数printf()简析 59
2.6.1 格式输出:printf()函数 59
2.6.2 示例程序:printf函数的用法示例 60
2.7 智能显示当前使用的OpenCV版本 61
2.8 本章小结 61
第3章 HighGUI图形用户界面初步 63
3.1 图像的载入、显示和输出到文件 64
3.1.1 OpenCV的命名空间 64
3.1.2 Mat类简析 64
3.1.3 图像的载入与显示概述 65
3.1.4 图像的载入:imread()函数 65
3.1.5 图像的显示:imshow()函数 66
3.1.6 关于InputArray类型 67
3.1.7 创建窗口:namedWindow()函数 67
3.1.8 输出图像到文件:imwrite()函数 68
3.1.9 综合示例程序:图像的载入、显示与输出 70
3.2 滑动条的创建和使用 73
3.2.1 创建滑动条:createTrackbar()函数 73
3.2.2 获取当前轨迹条的位置:getTrackbarPos()函数 76
3.3 鼠标操作 76
3.4 本章小结 80
第二部分 初探core组件 83
第4章 OpenCV数据结构与基本绘图 85
4.1 基础图像容器Mat 86
4.1.1 数字图像存储概述 86
4.1.2 Mat结构的使用 86
4.1.3 像素值的存储方法 88
4.1.4 显式创建Mat对象的七种方法 89
4.1.5 OpenCV中的格式化输出方法 91
4.1.6 输出其他常用数据结构 94
4.1.7 示例程序:基础图像容器Mat类的使用 95
4.2 常用数据结构和函数 95
4.2.1 点的表示:Point类 96
4.2.2 颜色的表示:Scalar类 96
4.2.3 尺寸的表示:Size类 96
4.2.4 矩形的表示:Rect类 97
4.2.5 颜色空间转换:cvtColor()函数 98
4.2.6 其他常用的知识点 100
4.3 基本图形的绘制 100
4.3.1 DrawEllipse()函数的写法 101
4.3.2 DrawFilledCircle()函数的写法 102
4.3.3 DrawPolygon()函数的写法 102
4.3.4 DrawLine()函数的写法 103
4.3.5 main函数的写法 104
4.4 本章小结 106
第5章 core组件进阶 107
5.1 访问图像中的像素 108
5.1.1 图像在内存之中的存储方式 108
5.1.2 颜色空间缩减 108
5.1.3 LUT函数:Look up table操作 109
5.1.4 计时函数 110
5.1.5 访问图像中像素的三类方法 110
5.1.6 示例程序 114
5.2 ROI区域图像叠加&图像混合 114
5.2.1 感兴趣区域:ROI 115
5.2.2 线性混合操作 116
5.2.3 计算数组加权和:addWeighted()函数 117
5.2.4 综合示例:初级图像混合 120
5.3 分离颜色通道、多通道图像混合 125
5.3.1 通道分离:split()函数 125
5.3.2 通道合并:merge()函数 126
5.3.3 示例程序:多通道图像混合 127
5.4 图像对比度、亮度值调整 131
5.4.1 理论依据 131
5.4.2 访问图片中的像素 131
5.4.3 示例程序:图像对比度、亮度值调整 132
5.5.1 离散傅里叶变换的原理 135
5.5.2 dft()函数详解 136
5.5.3 返回DFT最优尺寸大小:getOptimalDFTSize()函数 137
5.5.4 扩充图像边界:copyMakeBorder()函数 137
5.5.5 计算二维矢量的幅值:magnitude()函数 138
5.5.6 计算自然对数:log()函数 138
5.5.7 矩阵归一化:normalize()函数 138
5.5.8 示例程序:离散傅里叶变换 139
5.6 输入输出XML和YAML文件 144
5.6.1 XML和YAML文件简介 144
5.6.2 FileStorage类操作文件的使用引导 144
5.6.3 示例程序:XML和YAML文件的写入 147
5.6.4 示例程序:XML和YAML文件的读取 148
5.7 本章小结 150
第三部分 掌握imgproc组件 151
第6章 图像处理 153
6.1 线性滤波:方框滤波、均值滤波、高斯滤波 154
6.1.1 平滑处理 154
6.1.2 图像滤波与滤波器 154
6.1.3 线性滤波器的简介 155
6.1.4 滤波和模糊 155
6.1.5 邻域算子与线性邻域滤波 155
6.1.6 方框滤波(box Filter) 156
6.1.7 均值滤波 157
6.1.8 高斯滤波 159
6.1.9 线性滤波相关OpenCV源码剖析 160
6.1.10 OpenCV中GaussianBlur函数源码剖析 164
6.1.11 线性滤波核心API函数 165
6.1.12 图像线性滤波综合示例 170
6.2 非线性滤波:中值滤波、双边滤波 175
6.2.1 非线性滤波概述 175
6.2.2 中值滤波 175
6.2.3 双边滤波 177
6.2.4 非线性滤波相关核心API函数 178
6.2.5 OpenCV中的5种图像滤波综合示例 181
6.3 形态学滤波(1):腐蚀与膨胀 187
6.3.1 形态学概述 187
6.3.2 膨胀 188
6.3.3 腐蚀 189
6.3.4 相关OpenCV源码分析溯源 190
6.3.5 相关核心API函数讲解 191
6.3.6 综合示例:腐蚀与膨胀 195
6.4 形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽 198
6.4.1 开运算 199
6.4.2 闭运算 200
6.4.3 形态学梯度 200
6.4.4 顶帽 201
6.4.5 黑帽 202
6.4.6 形态学滤波OpenCV源码分析溯源 203
6.4.7 核心API函数:morphologyEx() 205
6.4.8 各形态学操作使用范例一览 206
6.4.9 综合示例:形态学滤波 208
6.5 漫水填充 214
6.5.1 漫水填充的定义 214
6.5.2 漫水填充法的基本思想 214
6.5.3 实现漫水填充算法:floodFill函数 214
6.5.4 综合示例:漫水填充 216
6.6 图像金字塔与图片尺寸缩放 223
6.6.1 引言 223
6.6.2 关于图像金字塔 223
6.6.3 高斯金字塔 225
6.6.4 拉普拉斯金字塔 226
6.6.5 尺寸调整:resize()函数 227
6.6.6 图像金字塔相关API函数 230
6.6.7 综合示例:图像金字塔与图片尺寸缩放 234
6.7 阈值化 237
6.7.1 固定阈值操作:Threshold()函数 238
6.7.2 自适应阈值操作:adaptiveThreshold()函数 239
6.7.3 示例程序:基本阈值操作 240
6.8 本章小结 244
第7章 图像变换 247
7.1 基于OpenCV的边缘检测 248
7.1.1 边缘检测的一般步骤 248
7.1.2 canny算子 248
7.1.3 sobel算子 253
7.1.4 Laplacian 算子 256
7.1.5 scharr滤波器 259
7.1.6 综合示例:边缘检测 262
7.2 霍夫变换 267
7.2.1 霍夫变换概述 267
7.2.2 OpenCV中的霍夫线变换 268
7.2.3 霍夫线变换的原理 268
7.2.4 标准霍夫变换:HoughLines()函数 270
7.2.5 累计概率霍夫变换:HoughLinesP()函数 272
7.2.6 霍夫圆变换 274
7.2.7 霍夫梯度法的原理 275
7.2.8 霍夫梯度法的缺点 276
7.2.9 霍夫圆变换:HoughCircles()函数 276
7.2.10 综合示例:霍夫变换 278
7.3 重映射 281
7.3.1 重映射的概念 281
7.3.2 实现重映射:remap()函数 282
7.3.3 基础示例程序:基本重映射 283
7.3.4 综合示例程序:实现多种重映射 285
7.4 仿射变换 289
7.4.1 认识仿射变换 289
7.4.2 仿射变换的求法 290
7.4.3 进行仿射变换:warpAffine()函数 291
7.4.4 计算二维旋转变换矩阵:getRotationMatrix2D()函数 292
7.4.5 示例程序:仿射变换 292
7.5.1 直方图均衡化的概念和特点 296
7.5.2 实现直方图均衡化:equalizeHist()函数 297
7.5.3 示例程序:直方图均衡化 298
7.6 本章小结 300
第8章 图像轮廓与图像分割修复 303
8.1 查找并绘制轮廓 304
8.1.1 寻找轮廓:findContours()函数 304
8.1.2 绘制轮廓:drawContours()函数 305
8.1.3 基础示例程序:轮廓查找 306
8.1.4 综合示例程序:查找并绘制轮廓 308
8.2 寻找物体的凸包 312
8.2.1 凸包 312
8.2.2 寻找凸包:convexHull()函数 313
8.2.3 基础示例程序:凸包检测基础 313
8.2.4 综合示例程序:寻找和绘制物体的凸包 315
8.3 使用多边形将轮廓包围 318
8.3.1 返回外部矩形边界:boundingRect()函数 318
8.3.2 寻找最小包围矩形:minAreaRect()函数 318
8.3.3 寻找最小包围圆形:minEnclosingCircle()函数 318
8.3.4 用椭圆拟合二维点集:fitEllipse()函数 319
8.3.5 逼近多边形曲线:approxPolyDP()函数 319
8.3.6 基础示例程序:创建包围轮廓的矩形边界 319
8.3.7 基础示例程序:创建包围轮廓的圆形边界 321
8.3.8 综合示例程序:使用多边形包围轮廓 324
8.4 图像的矩 327
8.4.1 矩的计算:moments()函数 328
8.4.2 计算轮廓面积:contourArea()函数 328
8.4.3 计算轮廓长度:arcLength()函数 328
8.4.4 综合示例程序:查找和绘制图像轮廓矩 329
8.5.1 实现分水岭算法:watershed()函数 334
8.5.2 综合示例程序:分水岭算法 334
8.6 图像修补 338
8.6.1 实现图像修补:inpaint()函数 340
8.6.2 综合示例程序:图像修补 341
8.7 本章小结 343
第9章 直方图与匹配 345
9.1 图像直方图概述 346
9.2 直方图的计算与绘制 347
9.2.1 计算直方图:calcHist()函数 347
9.2.2 找寻最值:minMaxLoc()函数 348
9.2.3 示例程序:绘制H—S直方图 348
9.2.4 示例程序:计算并绘制图像一维直方图 350
9.2.5 示例程序:绘制RGB三色直方图 352
9.3 直方图对比 355
9.3.1 对比直方图:compareHist()函数 355
9.3.2 示例程序:直方图对比 356
9.4 反向投影 360
9.4.1 引言 360
9.4.2 反向投影的工作原理 360
9.4.3 反向投影的作用 361
9.4.4 反向投影的结果 361
9.4.5 计算反向投影:calcBackProject()函数 361
9.4.6 通道复制:mixChannels()函数 362
9.4.7 综合程序:反向投影 363
9.5 模板匹配 367
9.5.1 模板匹配的概念与原理 367
9.5.2 实现模板匹配:matchTemplate()函数 367
9.5.3 综合示例:模板匹配 369
9.6 本章小结 373
第四部分 深入feature2d组件 375
第10章 角点检测 377
10.1 Harris角点检测 378
10.1.1 兴趣点与角点 378
10.1.2 角点检测 378
10.1.3 harris角点检测 379
10.1.4 实现Harris角点检测:cornerHarris()函数 379
10.1.5 综合示例:harris角点检测与绘制 381
10.2 Shi-Tomasi角点检测 384
10.2.1 Shi-Tomasi角点检测概述 384
10.2.2 确定图像强角点:goodFeaturesToTrack()函数 384
10.2.3 综合示例:Shi-Tomasi角点检测 385
10.3 亚像素级角点检测 388
10.3.1 背景概述 388
10.3.2 寻找亚像素角点:cornerSubPix()函数 389
10.3.3 综合示例:亚像素级角点检测 389
10.4 本章小结 392
第11章 特征检测与匹配 395
11.1 SURF特征点检测 396
11.1.1 SURF算法概览 396
11.1.2 SURF算法原理 396
11.1.3 SURF类相关OpenCV源码剖析 400
11.1.4 绘制关键点:drawKeypoints()函数 401
11.1.5 KeyPoint类 402
11.1.6 示例程序:SURF特征点检测 402
11.2 SURF特征提取 405
11.2.1 绘制匹配点:drawMatches()函数 405
11.2.2 BruteForceMatcher类源码分析 407
11.2.3 示例程序:SURF特征提取 408
11.3 使用FLANN进行特征点匹配 410
11.3.1 FlannBasedMatcher类的简单分析 410
11.3.2 找到最佳匹配:DescriptorMatcher::match方法 411
11.3.3 示例程序: 使用FLANN进行特征点匹配 411
11.3.4 综合示例程序:FLANN结合SURF进行关键点的描述和匹配 413
11.3.5 综合示例程序:SIFT配合暴力匹配进行关键点描述和提取 417
11.4 寻找已知物体 420
11.4.1 寻找透视变换:findHomography()函数 421
11.4.2 进行透视矩阵变换:perspectiveTransform()函数 421
11.4.3 示例程序: 寻找已知物体 422
11.5 ORB特征提取 425
11.5.1 ORB算法概述 425
11.5.2 相关概念认知 425
11.5.3 ORB类相关源码简单分析 426
11.5.4 示例程序:ORB算法描述与匹配 426
11.6 本章小结 430
附录 433
A1 配套示例程序清单 433
A2 随书额外附赠的程序一览 436
A3 书本核心函数清单 439
A4 Mat类函数一览 442
A4.1 构造函数:Mat::Mat 442
A4.2 析构函数Mat::~Mat 444
A4.3 Mat类成员函数 444
主要参考文献 447
作者简介
毛星云,90后,网络ID“浅墨”。微软VC++领域最具价值专家(MVP),中国2013年度十大杰出IT博客作者,南京航空航天大学2014年度十大杰出青年。CSDN博客专家,2013年度CSDN博客之星,于CSDN写博数年,博客浏览量已逾252万人次。本科毕业于乌克兰国立航空航天大学以及南京航空航天大学,硕士就读于南京航空航天大学。已出版著作《逐梦旅程:Windows游戏编程之从零开始》,个人事迹曾多次被人民网、新华网、凤凰网、网易新闻、新浪新闻、金陵晚报、现代快报等主流媒体报道。
前言
计算机视觉是一个近几年来日臻成熟的领域。随着运算性能强劲而又价格实惠的计算设备的不断问世,创建复杂的图像应用从未像今天这般容易。OpenCV在计算机视觉领域扮演着重要的角色,它是一个基于开源发行的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。自1999年问世以来,OpenCV已经被计算机视觉领域的学者和开发者视为首选工具,并成为了计算机视觉领域最有力的研究工具之一。
OpenCV最初由Intel的一个小组进行开发。在一系列的beta版本后,OpenCV 1.0正式版本终于在2006年10月19日发布。
2009年10月1日,OpenCV 2.0问世,它带来了全新的C++接口,将OpenCV的能力无限放大。在2.0的时代,OpenCV增加了全新的平台支持,包括iOS和Andriod,通过CUDA和OpenCL实现了GPU加速,为Python和Java用户提供了接口,基于Github和Buildbot构建了充满艺术感的持续集成的系统,所以才有了被全世界的很多公司和学校所采用的稳定易用的OpenCV 2.4.x。
2014年8月21日,OpenCV 3.0 Alpha发布,它带来了全新的项目架构的改变,宣告了计算机视觉新时代的来临。和其他大型项目一样,OpenCV3抛弃了整体统一架构,使用内核+插件的架构形式,让自身主体更加稳定,而附加的库则可以更加灵活多变,以保持高速的发展与迭代。
本书源自于笔者在CSDN上连载的名为“OpenCV入门教程”的系列博客文章,自2014年2月24日发表第一篇以来,得到了广大OpenCV爱好者的广泛关注与支持,累计阅读量突破了40多万人次。不少读者强烈希望将这些内容集结成书,并加入更多新的内容。于是,经过笔者半年的笔耕不辍,便有了现在这本书的诞生。
作为一本入门级的OpenCV编程教材,本书以详细注释的程序代码为主线,以新版OpenCV最核心的core、HighGUI、improc和feature2d这4个组件的相关函数、类和数据结构为出发点,详细讲解了学习新版本OpenCV中会遇到了各种问题,并提供了详尽的实战代码作为参考。本书的写作初衷是让更多的使用者能熟练使用采用新版C++接口的OpenCV2或OpenCV3,了解OpenCV2和OpenCV3的诸多细节上的区别,以推动新版OpenCV在世界范围内的普及。
本书的内容安排
本书分为4个部分、11个章节,现将内容梗概列举如下。
第1章 邂逅OpenCV:介绍OpenCV的周边概念,分析OpenCV的基本架构,讲解OpenCV3的新特性。本章重点讲解了OpenCV的下载、安装与配置过程;在配置完成后,带领大家正式领略OpenCV的魅力,讲解了4个OpenCV图像处理小程序,并指导大家学习如何使用OpenCV操作视频和调用摄像头。
第2章 启程前的认知准备:进行OpenCV官方例程的引导学习与赏析,讲解如何编译OpenCV的源代码,并引入了对一些周边概念的认知。
第3章 HighGUI图形用户界面初步:对图像的载入、显示和输出到文件进行详细地分析,讲解OpenCV中滑动条的创建和使用,以及如何用鼠标进行交互操作。
第4章 OpenCV数据结构与基本绘图: 讲解OpenCV中常用的数据结构以及基本的绘图操作。
第5章 core组件进阶:讲解core模块的一些进阶知识点,如操作图像中的像素、图像混合、分离颜色通道、调节图像的对比度和亮度、进行离散傅里叶变换,以及输入输出XML和YAML文件。
第6章 图像处理:学习各种利用OpenCV进行图像处理的方法,包括属于线性滤波的方框滤波、均值滤波与高斯滤波,属于非线性滤波的中值滤波、双边滤波;两种基本形态学操作——膨胀与腐蚀;5种高级形态学滤波操作——开运算、闭运算、形态学梯度、顶帽以及黑帽;此外,还有漫水填充算法、图像金字塔、图像缩放、阈值化。
第7章 图像变换:讲解多种类型的图像变换方法。包括利用OpenCV进行边缘检测所用到的canny算子、sobel算子,Laplace算子以及scharr滤波器;进行图像特征提取的霍夫线变换、霍夫圆变换,重映射和仿射变换以及直方图均衡化。
第8章 图像轮廓与图像分割修复: 讲解如何查找轮廓并绘制轮廓,如何寻找物体的凸包,使用多边形来包围轮廓,以及计算一个图像的矩。此外还介绍了分水岭算法和图像修补操作的实现方法。
第9章 直方图与匹配:讲解图像直方图相关的编程技巧,以及直方图对比、反向投影和模板匹配技术。
第10章 角点检测:讲解Harris角点检测和Shi-Tomasi角点检测,以及一种亚像素角点检测方法。
第11章 特征检测与匹配:使用OpenCV2讲解并实现了SURF、SIFT和ORB特征检测方法,并在FLANN特征匹配的基础上,进一步实现了利用Homography映射来找出已知物体。
适合阅读本书的读者
研究计算机视觉以及相关领域的在校学生和老师
本书拥有详实的内容,注释详尽的代码,会是助你通过OpenCV来研习计算机视觉理论、撰写论文、通过毕业设计、完成科研项目的得力工具。同时,本书适合作为大学计算机视觉课程的教学用书。
初次接触OpenCV、有一定C/C++编程基础的研究人员
作为一本定位为快速入门新版OpenCV标准的编程教程,本书需要的仅仅是一些简单的C/C++编程语言基础。如果你已经具备了这些基础,并对计算机视觉感兴趣,那么本书正是为你所准备的。
已经有过OpenCV1.0编程经验,想快速了解并上手OpenCV2、OpenCV3编程的计算机视觉领域的专业人员
如果你曾经使用过OpenCV1.0,或者研读过OpenCV1.0时代的经典著作《Learning OpenCV》,本书会让你倍感亲切。你会发现新版OpenCV带了更多强大和便利的特性,让你事半功倍,如虎添翼。
想拥有一本新版OpenCV接口工具书的计算机视觉爱好者
本书中将自OpenCV2以来(包括OpenCV3)的常用类和函数进行了详细地讲解,并在附录中提供了“书本核心函数清单”以便检索。你会在书中快速查找到你需要用到的函数、数据结构和类的用法。
想拥有海量的详细注释的OpenCV2、OpenCV3示例程序代码的OpenCV爱好者
本书包含OpenCV2版的95个书本主线示例程序源代码、21个附赠示例程序源代码,OpenCV3版的95个书本主线示例程序源代码。OpenCV2、OpenCV3两版代码提供分开下载。这些程序代码都经过详细而有条理的注释,并提供可以独立运行的.exe文件供快速查看程序效果,方便查看和检索。你会在海量的示例程序中找到你需要的参考代码,从而加速你的研究和学习。
图像处理、计算机视觉领域的业余爱好者
海阔凭鱼跃,天高任鸟飞,计算机视觉领域的宝库任你探索。
开源项目爱好者
OpenCV作为一个完全免费并开源代码开发的计算机视觉代码库,有总计上百万行的源代码供你研究学习,本书将是引导你学习它们的良师益友。
本书的示例程序说明
本书的示例程序最初都在OpenCV 2.4.9(2014年4月15日面世)版本下开发,书稿初版也是基于OpenCV2.4.9而写。在书稿写作和修订过程中,恰逢OpenCV3.0 Alpha(2014年8月21日)和OpenCV3 Beta(2014年11月11日)的发布,所以本书在审校和修订过程中(2014年12月1日),决定站在浪潮之巅,以OpenCV2为主,加入OpenCV3的诸多特性,让这本书可以同时胜任OpenCV2和OpenCV3两个版本教材的角色。这也是为什么本书会有OpenCV2和OpenCV3两个独立版本的示例程序的原因。
两个版本、详细注释的100多个示例程序源代码是本书的灵魂,现将示例程序的相关情况概括如下。
本书包含OpenCV2版的95个书本主线示例程序源代码、21个附赠示例程序源代码,以及OpenCV3版的95个书本主线示例程序源代码。
OpenCV2、OpenCV3两版代码提供分开下载。
OpenCV2版的示例程序在Windows7 64位旗舰版、Visual Stuido 2010 、OpenCV2.4.9的环境下开发与测试,理论上支持OpenCV2系列的所有版本的编译运行。
OpenCV3版的示例程序在Windows7 64位旗舰版、Visual Stuido 2010 、OpenCV3.0 beta的环境下开发与测试,理论上支持目前已经发布的OpenCV3全版本。
程序源代码都经过详细而有条理的注释。
额外提供可以独立运行的.exe文件供快速查看程序效果,并方便检索。
本书配套示例代码的下载方式有以下几种。
扫描本书封面后勒口的二维码,得到下载地址。
在作者博客中单击相应的书本维护博文里贴出的下载链接。
在电子工业出版社的官方网站中进行下载。
致谢
首先需要感谢我的导师,南京航空航天大学冷雪飞教授的知遇之恩,她也亲自参与撰写了本书的部分章节。在攻读硕士学位阶段,如果没有导师的谆谆教诲,我不会和OpenCV相遇,也就不会有此书的出版。
感谢我的同门师兄王碧辉与吴松森参与撰写本书的部分章节,他们为本书的完善做出了卓越的贡献。
感谢OpenCV开发团队为世界研发出如此强大且稳定、易用的计算机开源视觉库,并持续不断地对其进行维护与更新。
感谢父母将我养育成人,感谢家人们的嘘寒问暖,你们是我最坚强的后盾。
感谢母校南京航空航天大学赐予我一颗不甘平庸、上下求索的心。
感谢南京航空航天大学的戴泉晨老师对本书出版所做出的帮助与支持。
感谢国家自然科学基金青年科学基金项目“新型单定子二自由度超声电机及其驱动的智能云台系统的关键技术研究”(项目批准号:51205193)对本书理论研究方面提供的经费支持。
感谢电子工业出版社博文视点的陈晓猛和丁一琼编辑为本书的出版所做的大量的工作,他们对出版物的专业和严谨的态度给我留下了深刻的印象。
最后,需要感谢我博客上的众多读者们,是你们对这本书的期待和热情的留言让我有了完成这本书的动力和勇气。
交流与勘误
由于编者水平有限,书籍即使经过了多次的校对,也难免会有疏漏之处。希望书本前的你,能够热心地指出书本中错误,以便在这本书下一版印刷的时候,能以一个更完美更严谨的样子,呈现在大家的面前。另外,你要相信你不是一个人在战斗,在作者的博客中,可以找到与自己志同道合的众多喜欢计算机视觉编程技术的爱好者们。我们可以一同交流,共同学习进步。
最后,愿大家在本书的帮助下,都能很好地入门和掌握新版OpenCV。
愿本书能为新版OpenCV在国内的普及以及在世界范围内的发展,献上绵薄之力。
浅墨
2014年12月于南京
参考资料
最新修订时间:2024-11-28 21:15
目录
概述
内容简介
参考资料