OpenCV编程入门目录
- 第一部分 快速上手OpenCV
- 第1 章 邂逅OpenCV
- 1.1 OpenCV 周边概念认知
- 1.1. 图像处理、计算机视觉与OpenCV
- 1.1. OpenCV 概述
- 1.1. 起源及发展
- 1.1. 应用概述
- .2OpenCV 基本架构分析
- .3OpenCV3 带来了什么
- 1.3. 项目架构的改变
- 1.3. 将OpenCV2 代码升级到OpenCV3 报错时的一些策略
- .4OpenCV 的下载、安装与配置
- 1.4. 预准备:下载和安装集成开发环境
- 1.4. 第一步:下载和安装OpenCV SDK
- 1.4. 第二步:配置环境变量
- 1.4. 第三步:工程包含(include)目录的配置
- 1.4. 第四步:工程库(lib)目录的配置
- 1.4. 第五步:链接库的配置
- 1.4. 第六步:在Windows 文件夹下加入OpenCV 动态链接库
- 1.4. 第七步:最终测试
- 1.4. 可能遇到的问题和解决方案
- .5快速上手OpenCV 图像处理
- 1.5. 第一个程序:图像显示
- 1.5. 第二个程序:图像腐蚀
- 1.5. 第三个程序:图像模糊
- 1.5. 第四个程序:canny 边缘检测
- .6OpenCV 视频操作基础
- 1.6. 读取并播放视频
- 1.6. 调用摄像头采集图像
- 1.7 本章小结
- 第2 章 启程前的认知准备
- 2.1 OpenCV 官方例程引导与赏析
- 2.1. 彩色目标跟踪:Camshift
- 2.1. 光流:optical flow
- 2.1. 点追踪:lkdemo
- 2.1. 人脸识别:objectDetection
- 2.1. 支持向量机引导
- 2.2.开源的魅力:编译OpenCV 源代码
- 2.2. 下载安装CMake
- 2.2. 使用CMake 生成OpenCV 源代码工程的解决方案
- 2.2. 编译OpenCV 源代码
- 2.3.“opencv hpp”头文件认知
- .4命名规范约定
- .5argc 与argv 参数解惑
- 2.5. 初识main 函数中的argc 和argv
- 2.5. argc、argv 的具体含义
- 2.5. Visual Studio 中main 函数的几种写法说明
- 2.5. 总结
- .6格式输出函数printf()简析
- 2.6. 格式输出:printf()函数
- 2.6. 示例程序:printf 函数的用法示例
- .7智能显示当前使用的OpenCV 版本
- .8本章小结
- 第3 章 HighGUI 图形用户界面初步
- 3.1 图像的载入、显示和输出到文件
- 3.1. OpenCV 的命名空间
- 3.1. Mat 类简析
- 3.1. 图像的载入与显示概述
- 3.1. 图像的载入:imread()函数
- 3.1. 图像的显示:imshow()函数
- 3.1. 关于InputArray 类型
- 3.1. 创建窗口:namedWindow()函数
- 3.1. 输出图像到文件:imwrite()函数
- 3.1. 综合示例程序:图像的载入、显示与输出
- .2滑动条的创建和使用
- 3.2. 创建滑动条:createTrackbar()函数
- 3.2. 获取当前轨迹条的位置:getTrackbarPos()函数
- .3鼠标操作
- .4本章小结
- 第二部分 初探core 组件
- 第4 章 OpenCV 数据结构与基本绘图
- 4.1 基础图像容器Mat
- 4.1. 数字图像存储概述
- 4.1. Mat 结构的使用
- 4.1. 像素值的存储方法
- 4.1. 显式创建Mat 对象的七种方法
- 4.1. OpenCV 中的格式化输出方法
- 4.1. 输出其他常用数据结构
- 4.1. 示例程序:基础图像容器Mat 类的使用
- .2常用数据结构和函数
- 4.2. 点的表示:Point 类
- 4.2. 颜色的表示:Scalar 类
- 4.2. 尺寸的表示:Size 类
- 4.2. 矩形的表示:Rect 类
- 4.2. 颜色空间转换:cvtColor()函数
- 4.2. 其他常用的知识点
- .3基本图形的绘制
- 4.3. DrawEllipse()函数的写法
- 4.3. DrawFilledCircle()函数的写法
- 4.3. DrawPolygon()函数的写法
- 4.3. DrawLine()函数的写法
- 4.3. main 函数的写法
- 4.4 本章小结
- 第5 章 core 组件进阶
- 5.1 访问图像中的像素
- 5.1. 图像在内存之中的存储方式
- 5.1. 颜色空间缩减
- 5.1. LUT 函数:Look up table 操作
- 5.1. 计时函数
- 5.1. 访问图像中像素的三类方法
- 5.1. 示例程序
- .2ROI 区域图像叠加&图像混合
- 5.2. 感兴趣区域:ROI
- 5.2. 线性混合操作
- 5.2. 计算数组加权和:addWeighted()函数
- 5.2. 综合示例:初级图像混合
- 5.3 分离颜色通道、多通道图像混合
- 5.3. 通道分离:split()函数
- 5.3. 通道合并:merge()函数
- 5.3. 示例程序:多通道图像混合
- 5.4 图像对比度、亮度值调整
- 5.4. 理论依据
- 5.4. 访问图片中的像素
- 5.4. 示例程序:图像对比度、亮度值调整
- .5离散傅里叶变换
- 5.5. 离散傅里叶变换的原理
- 5.5. dft()函数详解
- 5.5. 返回DFT 最优尺寸大小:getOptimalDFTSize()函数
- 5.5. 扩充图像边界:copyMakeBorder()函数
- 5.5. 计算二维矢量的幅值:magnitude()函数
- 5.5. 计算自然对数:log()函数
- 5.5. 矩阵归一化:normalize()函数
- 5.5. 示例程序:离散傅里叶变换
- .6输入输出XML 和YAML 文件
- 5.6. XML 和YAML 文件简介
- 5.6. FileStorage 类操作文件的使用引导
- 5.6. 示例程序:XML 和YAML 文件的写入
- 5.6. 示例程序:XML 和YAML 文件的读取
- 5.7 本章小结
- 第三部分 掌握imgproc 组件
- 第6 章 图像处理
- 6.1 线性滤波:方框滤波、均值滤波、高斯滤波
- 6.1. 平滑处理
- 6.1. 图像滤波与滤波器
- 6.1. 线性滤波器的简介
- 6.1. 滤波和模糊
- 6.1. 邻域算子与线性邻域滤波
- 6.1. 方框滤波(box Filter)
- 6.1. 均值滤波
- 6.1. 高斯滤波
- 6.1. 线性滤波相关OpenCV 源码剖析
- 6.1. OpenCV 中GaussianBlur 函数源码剖析
- 6.1. 线性滤波核心API 函数
- 6.1. 图像线性滤波综合示例
- 6.2 非线性滤波:中值滤波、双边滤波
- 6.2. 非线性滤波概述
- 6.2. 中值滤波
- 6.2. 双边滤波
- 6.2. 非线性滤波相关核心API 函数
- 6.2. OpenCV 中的5 种图像滤波综合示例
- .3形态学滤波():腐蚀与膨胀
- 6.3. 形态学概述
- 6.3. 膨胀
- 6.3. 腐蚀
- 6.3. 相关OpenCV 源码分析溯源
- 6.3. 相关核心API 函数讲解
- 6.3. 综合示例:腐蚀与膨胀
- .4形态学滤波():开运算、闭运算、形态学梯度、顶帽、黑帽
- 6.4. 开运算
- 6.4. 闭运算
- 6.4. 形态学梯度
- 6.4. 顶帽
- 6.4. 黑帽
- 6.4. 形态学滤波OpenCV 源码分析溯源
- 6.4. 核心API 函数:morphologyEx()
- 6.4. 各形态学操作使用范例一览
- 6.4. 综合示例:形态学滤波
- .5漫水填充
- 6.5. 漫水填充的定义
- 6.5. 漫水填充法的基本思想
- 6.5. 实现漫水填充算法:floodFill 函数
- 6.5. 综合示例:漫水填充
- .6图像金字塔与图片尺寸缩放
- 6.6. 引言
- 6.6. 关于图像金字塔
- 6.6. 高斯金字塔
- 6.6. 拉普拉斯金字塔
- 6.6. 尺寸调整:resize()函数
- 6.6. 图像金字塔相关API 函数
- 6.6. 综合示例:图像金字塔与图片尺寸缩放
- .7阈值化
- 6.7. 固定阈值操作:Threshold()函数
- 6.7. 自适应阈值操作:adaptiveThreshold()函数
- 6.7. 示例程序:基本阈值操作
- 6.8 本章小结
- 第7 章 图像变换
- 7.1 基于OpenCV 的边缘检测
- 7.1. 边缘检测的一般步骤
- 7.1. canny 算子
- 7.1. sobel 算子
- 7.1. Laplacian 算子
- 7.1. scharr 滤波器
- 7.1. 综合示例:边缘检测
- .2霍夫变换
- 7.2. 霍夫变换概述
- 7.2. OpenCV 中的霍夫线变换
- 7.2. 霍夫线变换的原理
- 7.2. 标准霍夫变换:HoughLines()函数
- 7.2. 累计概率霍夫变换:HoughLinesP()函数
- 7.2. 霍夫圆变换
- 7.2. 霍夫梯度法的原理
- 7.2. 霍夫梯度法的缺点
- 7.2. 霍夫圆变换:HoughCircles()函数
- 7.2. 综合示例:霍夫变换
- .3重映射
- 7.3. 重映射的概念
- 7.3. 实现重映射:remap()函数
- 7.3. 基础示例程序:基本重映射
- 7.3. 综合示例程序:实现多种重映射
- .4仿射变换
- 7.4. 认识仿射变换
- 7.4. 仿射变换的求法
- 7.4. 进行仿射变换:warpAffine()函数
- 7.4. 计算二维旋转变换矩阵:getRotationMatrix2D()函数
- 7.4. 示例程序:仿射变换
- .5直方图均衡化
- 7.5. 直方图均衡化的概念和特点
- 7.5. 实现直方图均衡化:equalizeHist()函数
- 7.5. 示例程序:直方图均衡化
- .6本章小结
- 第8 章 图像轮廓与图像分割修复
- 8.1 查找并绘制轮廓
- 8.1. 寻找轮廓:findContours()函数
- 8.1. 绘制轮廓:drawContours()函数
- 8.1. 基础示例程序:轮廓查找
- 8.1. 综合示例程序:查找并绘制轮廓
- .2寻找物体的凸包
- 8.2. 凸包
- 8.2. 寻找凸包:convexHull()函数
- 8.2. 基础示例程序:凸包检测基础
- 8.2. 综合示例程序:寻找和绘制物体的凸包
- .3使用多边形将轮廓包围
- 8.3. 返回外部矩形边界:boundingRect()函数
- 8.3. 寻找最小包围矩形:minAreaRect()函数
- 8.3. 寻找最小包围圆形:minEnclosingCircle()函数
- 8.3. 用椭圆拟合二维点集:fitEllipse()函数
- 8.3. 逼近多边形曲线:approxPolyDP()函数
- 8.3. 基础示例程序:创建包围轮廓的矩形边界
- 8.3. 基础示例程序:创建包围轮廓的圆形边界
- 8.3. 综合示例程序:使用多边形包围轮廓
- .4图像的矩
- 8.4. 矩的计算:moments()函数
- 8.4. 计算轮廓面积:contourArea()函数
- 8.4. 计算轮廓长度:arcLength()函数
- 8.4. 综合示例程序:查找和绘制图像轮廓矩
- .5分水岭算法
- 8.5. 实现分水岭算法:watershed()函数
- 8.5. 综合示例程序:分水岭算法
- .6图像修补
- 8.6. 实现图像修补:inpaint()函数
- 8.6. 综合示例程序:图像修补
- 8.7 本章小结
- 第9 章 直方图与匹配
- 9.1 图像直方图概述
- 9.2 直方图的计算与绘制
- 9.2. 计算直方图:calcHist()函数
- 9.2. 找寻最值:minMaxLoc()函数
- 9.2. 示例程序:绘制H—S 直方图
- 9.2. 示例程序:计算并绘制图像一维直方图
- 9.2. 示例程序:绘制RGB 三色直方图
- .3直方图对比
- 9.3. 对比直方图:compareHist()函数
- 9.3. 示例程序:直方图对比
- .4反向投影
- 9.4. 引言
- 9.4. 反向投影的工作原理
- 9.4. 反向投影的作用
- 9.4. 反向投影的结果
- 9.4. 计算反向投影:calcBackProject()函数
- 9.4. 通道复制:mixChannels()函数
- 9.4. 综合程序:反向投影
- .5模板匹配
- 9.5. 模板匹配的概念与原理
- 9.5. 实现模板匹配:matchTemplate()函数
- 9.5. 综合示例:模板匹配
- .6本章小结
- 第四部分 深入feature2d 组件
- 第10 章 角点检测
- 10.1 Harris 角点检测
- 10.1. 兴趣点与角点
- 10.1. 角点检测
- 10.1. harris 角点检测
- 10.1. 实现Harris 角点检测:cornerHarris()函数
- 10.1. 综合示例:harris 角点检测与绘制
- .2Shi-Tomasi 角点检测
- 10.2. Shi-Tomasi 角点检测概述
- 10.2. 确定图像强角点:goodFeaturesToTrack()函数
- 10.2. 综合示例:Shi-Tomasi 角点检测
- .3亚像素级角点检测
- 10.3. 背景概述
- 10.3. 寻找亚像素角点:cornerSubPix()函数
- 10.3. 综合示例:亚像素级角点检测
- 10.4 本章小结
- 第11 章 特征检测与匹配
- 11.1 SURF 特征点检测
- 11.1. SURF 算法概览
- 11.1. SURF 算法原理
- 11.1. SURF 类相关OpenCV 源码剖析
- 11.1. 绘制关键点:drawKeypoints()函数
- 11.1. KeyPoint 类
- 11.1. 示例程序:SURF 特征点检测
- .2SURF 特征提取
- 11.2. 绘制匹配点:drawMatches()函数
- 11.2. BruteForceMatcher 类源码分析
- 11.2. 示例程序:SURF 特征提取
- 11.3.使用FLANN 进行特征点匹配
- 11.3. FlannBasedMatcher 类的简单分析
- 11.3. 找到最佳匹配:DescriptorMatcher::match 方法
- 11.3. 示例程序: 使用FLANN 进行特征点匹配
- 11.3. 综合示例程序:FLANN 结合SURF 进行关键点的描述和匹配
- 11.3. 综合示例程序:SIFT 配合暴力匹配进行关键点描述和提取
- .4寻找已知物体
- 11.4. 寻找透视变换:findHomography()函数
- 11.4. 进行透视矩阵变换:perspectiveTransform()函数
- 11.4. 示例程序: 寻找已知物体
- .5ORB 特征提取
- 11.5. ORB 算法概述
- 11.5. 相关概念认知
- 11.5. ORB 类相关源码简单分析
- 11.5. 示例程序:ORB 算法描述与匹配
- 11.6 本章小结
- 附录
- A1 配套示例程序清单
- A2 随书额外附赠的程序一览
- A3 书本核心函数清单
- A4 Mat 类函数一览
- A4. 构造函数:Mat::Mat
- A4. 析构函数Mat::~Mat
- A4. Mat 类成员函数
- 主要参考文献
第一部分 快速上手OpenCV 1第1 章 邂逅OpenCV 31.1 OpenCV 周边概念认知 41.1.1 图像处理、计算机视觉与OpenCV 41.1.2 OpenCV 概述 41.1.3 起源及发展 51.1.4 应用概述 61.2OpenCV 基本架构分析 71.3OpenCV3 带来了什么 111.3.1 项目架构的改变 111.3.2 将OpenCV2 代码升级到OpenCV3 报错时的一些策略 121.4OpenCV 的下载、安装与配置 141.4.1 预准备:下载和安装集成开发环境 141.4.2 第一步:下载和安装OpenCV SDK 151.4.3 第二步:配置环境变量 161.4.4 第三步:工程包含(include)目录的配置 171.4.5 第四步:工程库(lib)目录的配置 211.4.6 第五步:链接库的配置 221.4.7 第六步:在Windows 文件夹下加入OpenCV 动态链接库 251.4.8 第七步:最终测试 261.4.9 可能遇到的问题和解决方案 271.5快速上手OpenCV 图像处理 281.5.1 第一个程序:图像显示 291.5.2 第二个程序:图像腐蚀 301.5.3 第三个程序:图像模糊 311.5.4 第四个程序:canny 边缘检测 321.6OpenCV 视频操作基础 341.6.1 读取并播放视频 341.6.2 调用摄像头采集图像 351.7 本章小结 38
第2 章 启程前的认知准备 392.1 OpenCV 官方例程引导与赏析 402.1.1 彩色目标跟踪:Camshift 412.1.2 光流:optical flow 422.1.3 点追踪:lkdemo 432.1.4 人脸识别:objectDetection 432.1.5 支持向量机引导 442.2.开源的魅力:编译OpenCV 源代码 452.2.1 下载安装CMake 452.2.2 使用CMake 生成OpenCV 源代码工程的解决方案 462.2.3 编译OpenCV 源代码 502.3.“opencv hpp”头文件认知 532.4命名规范约定 542.5argc 与argv 参数解惑 562.5.1 初识main 函数中的argc 和argv 562.5.2 argc、argv 的具体含义 572.5.3 Visual Studio 中main 函数的几种写法说明 582.5.4 总结 592.6格式输出函数printf()简析 592.6.1 格式输出:printf()函数 592.6.2 示例程序:printf 函数的用法示例 602.7智能显示当前使用的OpenCV 版本 612.8本章小结 61第3 章 HighGUI 图形用户界面初步 633.1 图像的载入、显示和输出到文件 643.1.1 OpenCV 的命名空间 643.1.2 Mat 类简析 643.1.3 图像的载入与显示概述 653.1.4 图像的载入:imread()函数 653.1.5 图像的显示:imshow()函数 663.1.6 关于InputArray 类型 673.1.7 创建窗口:namedWindow()函数 673.1.8 输出图像到文件:imwrite()函数 683.1.9 综合示例程序:图像的载入、显示与输出 703.2滑动条的创建和使用 733.2.1 创建滑动条:createTrackbar()函数 733.2.2 获取当前轨迹条的位置:getTrackbarPos()函数 763.3鼠标操作 763.4本章小结 80
第二部分 初探core 组件 83第4 章 OpenCV 数据结构与基本绘图 854.1 基础图像容器Mat 864.1.1 数字图像存储概述 864.1.2 Mat 结构的使用 864.1.3 像素值的存储方法 884.1.4 显式创建Mat 对象的七种方法 894.1.5 OpenCV 中的格式化输出方法 914.1.6 输出其他常用数据结构 944.1.7 示例程序:基础图像容器Mat 类的使用 954.2常用数据结构和函数 954.2.1 点的表示:Point 类 964.2.2 颜色的表示:Scalar 类 964.2.3 尺寸的表示:Size 类 964.2.4 矩形的表示:Rect 类 974.2.5 颜色空间转换:cvtColor()函数 984.2.6 其他常用的知识点 1004.3基本图形的绘制 1004.3.1 DrawEllipse()函数的写法 1014.3.2 DrawFilledCircle()函数的写法 1024.3.3 DrawPolygon()函数的写法 1024.3.4 DrawLine()函数的写法 1034.3.5 main 函数的写法 1044.4 本章小结 106第5 章 core 组件进阶 1075.1 访问图像中的像素 1085.1.1 图像在内存之中的存储方式 1085.1.2 颜色空间缩减 1085.1.3 LUT 函数:Look up table 操作 1095.1.4 计时函数 1105.1.5 访问图像中像素的三类方法 1105.1.6 示例程序 1145.2ROI 区域图像叠加&图像混合 1145.2.1 感兴趣区域:ROI 1155.2.2 线性混合操作 1165.2.3 计算数组加权和:addWeighted()函数 1175.2.4 综合示例:初级图像混合 1205.3 分离颜色通道、多通道图像混合 1255.3.1 通道分离:split()函数 1255.3.2 通道合并:merge()函数 1265.3.3 示例程序:多通道图像混合 1275.4 图像对比度、亮度值调整 1315.4.1 理论依据 1315.4.2 访问图片中的像素 1315.4.3 示例程序:图像对比度、亮度值调整 1325.5离散傅里叶变换 1355.5.1 离散傅里叶变换的原理 1355.5.2 dft()函数详解 1365.5.3 返回DFT 最优尺寸大小:getOptimalDFTSize()函数 1375.5.4 扩充图像边界:copyMakeBorder()函数 1375.5.5 计算二维矢量的幅值:magnitude()函数 1385.5.6 计算自然对数:log()函数 1385.5.7 矩阵归一化:normalize()函数 1385.5.8 示例程序:离散傅里叶变换 1395.6输入输出XML 和YAML 文件 1445.6.1 XML 和YAML 文件简介 1445.6.2 FileStorage 类操作文件的使用引导 1445.6.3 示例程序:XML 和YAML 文件的写入 1475.6.4 示例程序:XML 和YAML 文件的读取 1485.7 本章小结 150第三部分 掌握imgproc 组件 151第6 章 图像处理 1536.1 线性滤波:方框滤波、均值滤波、高斯滤波 1546.1.1 平滑处理 1546.1.2 图像滤波与滤波器 1546.1.3 线性滤波器的简介 1556.1.4 滤波和模糊 1556.1.5 邻域算子与线性邻域滤波 1556.1.6 方框滤波(box Filter) 1566.1.7 均值滤波 1576.1.8 高斯滤波 1596.1.9 线性滤波相关OpenCV 源码剖析 1606.1.10 OpenCV 中GaussianBlur 函数源码剖析 1646.1.11 线性滤波核心API 函数 1656.1.12 图像线性滤波综合示例 1706.2 非线性滤波:中值滤波、双边滤波 1756.2.1 非线性滤波概述 1756.2.2 中值滤波 1756.2.3 双边滤波 1776.2.4 非线性滤波相关核心API 函数 1786.2.5 OpenCV 中的5 种图像滤波综合示例 1816.3形态学滤波(1):腐蚀与膨胀 1876.3.1 形态学概述 1876.3.2 膨胀 1886.3.3 腐蚀 1896.3.4 相关OpenCV 源码分析溯源 1906.3.5 相关核心API 函数讲解 1916.3.6 综合示例:腐蚀与膨胀 1956.4形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽 1986.4.1 开运算 1996.4.2 闭运算 2006.4.3 形态学梯度 2006.4.4 顶帽 2016.4.5 黑帽 2026.4.6 形态学滤波OpenCV 源码分析溯源 2036.4.7 核心API 函数:morphologyEx() 2056.4.8 各形态学操作使用范例一览 2066.4.9 综合示例:形态学滤波 2086.5漫水填充 2146.5.1 漫水填充的定义 2146.5.2 漫水填充法的基本思想 2146.5.3 实现漫水填充算法:floodFill 函数 2146.5.4 综合示例:漫水填充 2166.6图像金字塔与图片尺寸缩放 2236.6.1 引言 2236.6.2 关于图像金字塔 2236.6.3 高斯金字塔 2256.6.4 拉普拉斯金字塔 2266.6.5 尺寸调整:resize()函数 2276.6.6 图像金字塔相关API 函数 2306.6.7 综合示例:图像金字塔与图片尺寸缩放 2346.7阈值化 2376.7.1 固定阈值操作:Threshold()函数 2386.7.2 自适应阈值操作:adaptiveThreshold()函数 2396.7.3 示例程序:基本阈值操作 2406.8 本章小结 244第7 章 图像变换 2477.1 基于OpenCV 的边缘检测 2487.1.1 边缘检测的一般步骤 2487.1.2 canny 算子 2487.1.3 sobel 算子 2537.1.4 Laplacian 算子 2567.1.5 scharr 滤波器 2597.1.6 综合示例:边缘检测 2627.2霍夫变换 2677.2.1 霍夫变换概述 2677.2.2 OpenCV 中的霍夫线变换 2687.2.3 霍夫线变换的原理 2687.2.4 标准霍夫变换:HoughLines()函数 2707.2.5 累计概率霍夫变换:HoughLinesP()函数 2727.2.6 霍夫圆变换 2747.2.7 霍夫梯度法的原理 2757.2.8 霍夫梯度法的缺点 2767.2.9 霍夫圆变换:HoughCircles()函数 2767.2.10 综合示例:霍夫变换 2787.3重映射 2817.3.1 重映射的概念 2817.3.2 实现重映射:remap()函数 2827.3.3 基础示例程序:基本重映射 2837.3.4 综合示例程序:实现多种重映射 2857.4仿射变换 2897.4.1 认识仿射变换 2897.4.2 仿射变换的求法 2907.4.3 进行仿射变换:warpAffine()函数 2917.4.4 计算二维旋转变换矩阵:getRotationMatrix2D()函数 2927.4.5 示例程序:仿射变换 2927.5直方图均衡化 2957.5.1 直方图均衡化的概念和特点 2967.5.2 实现直方图均衡化:equalizeHist()函数 2977.5.3 示例程序:直方图均衡化 2987.6本章小结 300
第8 章 图像轮廓与图像分割修复 3038.1 查找并绘制轮廓 3048.1.1 寻找轮廓:findContours()函数 3048.1.2 绘制轮廓:drawContours()函数 3058.1.3 基础示例程序:轮廓查找 3068.1.4 综合示例程序:查找并绘制轮廓 3088.2寻找物体的凸包 3128.2.1 凸包 3128.2.2 寻找凸包:convexHull()函数 3138.2.3 基础示例程序:凸包检测基础 3138.2.4 综合示例程序:寻找和绘制物体的凸包 3158.3使用多边形将轮廓包围 3188.3.1 返回外部矩形边界:boundingRect()函数 3188.3.2 寻找最小包围矩形:minAreaRect()函数 3188.3.3 寻找最小包围圆形:minEnclosingCircle()函数 3188.3.4 用椭圆拟合二维点集:fitEllipse()函数 3198.3.5 逼近多边形曲线:approxPolyDP()函数 3198.3.6 基础示例程序:创建包围轮廓的矩形边界 3198.3.7 基础示例程序:创建包围轮廓的圆形边界 3218.3.8 综合示例程序:使用多边形包围轮廓 3248.4图像的矩 3278.4.1 矩的计算:moments()函数 3288.4.2 计算轮廓面积:contourArea()函数 3288.4.3 计算轮廓长度:arcLength()函数 3288.4.4 综合示例程序:查找和绘制图像轮廓矩 3298.5分水岭算法 3338.5.1 实现分水岭算法:watershed()函数 3348.5.2 综合示例程序:分水岭算法 3348.6图像修补 3388.6.1 实现图像修补:inpaint()函数 3408.6.2 综合示例程序:图像修补 3418.7 本章小结 343第9 章 直方图与匹配 3459.1 图像直方图概述 3469.2 直方图的计算与绘制 3479.2.1 计算直方图:calcHist()函数 3479.2.2 找寻最值:minMaxLoc()函数 3489.2.3 示例程序:绘制H—S 直方图 3489.2.4 示例程序:计算并绘制图像一维直方图 3509.2.5 示例程序:绘制RGB 三色直方图 3529.3直方图对比 3559.3.1 对比直方图:compareHist()函数 3559.3.2 示例程序:直方图对比 3569.4反向投影 3609.4.1 引言 3609.4.2 反向投影的工作原理 3609.4.3 反向投影的作用 3619.4.4 反向投影的结果 3619.4.5 计算反向投影:calcBackProject()函数 3619.4.6 通道复制:mixChannels()函数 3629.4.7 综合程序:反向投影 3639.5模板匹配 3679.5.1 模板匹配的概念与原理 3679.5.2 实现模板匹配:matchTemplate()函数 3679.5.3 综合示例:模板匹配 3699.6本章小结 373第四部分 深入feature2d 组件 375第10 章 角点检测 37710.1 Harris 角点检测 37810.1.1 兴趣点与角点 37810.1.2 角点检测 37810.1.3 harris 角点检测 37910.1.4 实现Harris 角点检测:cornerHarris()函数 37910.1.5 综合示例:harris 角点检测与绘制 38110.2Shi-Tomasi 角点检测 38410.2.1 Shi-Tomasi 角点检测概述 38410.2.2 确定图像强角点:goodFeaturesToTrack()函数 38410.2.3 综合示例:Shi-Tomasi 角点检测 38510.3亚像素级角点检测 38810.3.1 背景概述 38810.3.2 寻找亚像素角点:cornerSubPix()函数 38910.3.3 综合示例:亚像素级角点检测 38910.4 本章小结 392第11 章 特征检测与匹配 39511.1 SURF 特征点检测 39611.1.1 SURF 算法概览 39611.1.2 SURF 算法原理 39611.1.3 SURF 类相关OpenCV 源码剖析 40011.1.4 绘制关键点:drawKeypoints()函数 40111.1.5 KeyPoint 类 40211.1.6 示例程序:SURF 特征点检测 40211.2SURF 特征提取 40511.2.1 绘制匹配点:drawMatches()函数 40511.2.2 BruteForceMatcher 类源码分析 40711.2.3 示例程序:SURF 特征提取 40811.3.使用FLANN 进行特征点匹配 41011.3.1 FlannBasedMatcher 类的简单分析 41011.3.2 找到最佳匹配:DescriptorMatcher::match 方法 41111.3.3 示例程序: 使用FLANN 进行特征点匹配 41111.3.4 综合示例程序:FLANN 结合SURF 进行关键点的描述和匹配 41311.3.5 综合示例程序:SIFT 配合暴力匹配进行关键点描述和提取 41711.4寻找已知物体 42011.4.1 寻找透视变换:findHomography()函数 42111.4.2 进行透视矩阵变换:perspectiveTransform()函数 42111.4.3 示例程序: 寻找已知物体 42211.5ORB 特征提取 42511.5.1 ORB 算法概述 42511.5.2 相关概念认知 42511.5.3 ORB 类相关源码简单分析 42611.5.4 示例程序:ORB 算法描述与匹配 42611.6 本章小结 430附录 433A1 配套示例程序清单 433A2 随书额外附赠的程序一览 436A3 书本核心函数清单 439A4 Mat 类函数一览 442A4.1 构造函数:Mat::Mat 442A4.2 析构函数Mat::~Mat 444A4.3 Mat 类成员函数 444主要参考文献 447
OpenCV编程入门目录的更多相关文章
- opencv编程入门技巧
opencv编程入门技巧 最近在项目中负责图像处理模块的编程工作,主要分为两个板块,一是视频图像去雾,二是可视.红外图像融合.为了提升开发效率,遂开始学习并使用opencv图像类库,效果很好的说~因为 ...
- opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)
#include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- VS2010/MFC编程入门教程之目录和总结
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...
- (转)VS2010-MFC编程入门教程之目录和总结
目前该教程可以到鸡啄米编程课堂去学习,阅读体验更好,更适合在线学习. 原文目录及链接: 一.VS2010/MFC编程入门教程之目录 第一部分:VS2010/MFC开发环境 VS2010/MFC编程入 ...
- 【目录】Matlab和C#混合编程文章目录
本博客所有文章分类的总目录链接:[总目录]本博客博文总目录-实时更新 1.Matlab和C#混合编程文章目录 9.接触Matlab10年后的一个总结,随时使用Matlab要掌握的一些要点 8.国内第一 ...
- OpenAl编程入门:播放一段音频
OpenAl编程入门 关于OpenAl我就不多介绍了,这两篇说明对于初步了解已经足够了:http://baike.baidu.com/view/1355367.htmhttp://en.wikiped ...
- VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html 鸡啄米在上一讲中 ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html 上一讲中讲了VS20 ...
随机推荐
- Python 静态方法、类方法和属性方法
Python 静态方法.类方法和属性方法 静态方法(staticmethod) staticmethod不与类或者对象绑定,类和实例对象都可以调用,没有自动传值效果,Python内置函数staticm ...
- HDOJ.2111 Saving HDU (贪心)
Saving HDU 点我挑战题目 题意分析 给出来背包容量v和物品数量n,接下来n行分别给出每个商品单位体积的价值和物品总共的体积(注意是单位体积,不是每个物品).求出最多能装多少价值的物品. 典型 ...
- bzoj4300: 绝世好题(DP)
按位DP f[i]表示第i位为1的最长子序列 #include<iostream> #include<cstring> #include<cstdlib> #inc ...
- LibreOJ #6190. 序列查询(线段树+剪枝)
莫队貌似是过不了的,这题是我没见过的科技... 首先区间按右端点排序,然后一个扫描线,扫到某个区间右端点时候计算答案,线段树上节点的信息并不需要明确定义,我们只要求线段树做到当前扫到now时,查询[L ...
- wildcard ,notdir ,patsubst ,obj=$(dir:%.c=%.o)
Makefile中wildcard的介绍 在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的 ...
- HDU 2655 主席树
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- SQLite 学习笔记
SQLite 学习笔记. 一.SQLite 安装 访问http://www.sqlite.org/download.html下载对应的文件. 1.在 Windows 上安装 SQLite. ...
- [ldap]ldap相关问题
背景: ldap数据库要同步,按照如下操作步骤: 1.导出: 使用slapcat,slapcat直接对数据库操作, slapcat 2.将所需的条目取出,生成文件in.ldif 3.在目标机器上导入: ...
- Webservice与CXF框架快速入门
1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化 ...
- 51Nod 1009 数字1的个数 | 数位DP
题意: 小于等于n的所有数中1的出现次数 分析: 数位DP 预处理dp[i][j]存 从1~以j开头的i位数中有几个1,那么转移方程为: if(j == 1) dp[i][j] = dp[i-1][9 ...