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 ...
随机推荐
- springboot2.0 快速集成kafka
一.kafka搭建 参照<kafka搭建笔记> 二.版本 springboot版本 <parent> <groupId>org.springframework.bo ...
- 什么是Docker?(6-12)
关于什么是Docker,刚开始学的时候一脸懵X,这个东西到底是干嘛用的啊?偶然间在知乎上刷到一个比较通俗的解释: Docker就相当于一个容器,这个容器了不得了,它里面能搭好你项目需要的所有环境,并且 ...
- [CQOI2012]交换棋子 网络流
---题面--- 题解: 一开始很快想出了一个接近正解的建图方法,但其实是错误的,不过还是骗了70分_(:зゝ∠)_ 首先我们可以观察到棋子有限,但费用多种,其实也就相当于限制了流量,找最小费用 对于 ...
- React的setState执行机制
1. setState基本特点 1. setState是同步执行的 setState是同步执行的,但是state并不一定会同步更新 2. setState在React生命周期和合成事件中批量覆盖执行 ...
- bzoj1025: [SCOI2009]游戏(DP)
题目大意:将长度为n的排列作为1,2,3,...,n的置换,有可能置换x次之后,序列又回到了1,2,3,...,n,求所有可能的x的个数. 看见这种一脸懵逼的题第一要务当然是简化题意...我们可以发现 ...
- Markdown资料收集
教程介绍 原生Markdown不支持表格,表格属于扩展Markdown语法 快速入门:https://github.com/riku/Markdown-Syntax-CN/blob/master/ba ...
- JavaScript颜色选择器的实现
下面的JavaScript取色器可以方便网页设计取色,同时也可以看一下,网上常见的取色器是如何实现的.这里只给出了核心的JavaScript代码,其它部分比如CSS可以参照本页的源代码. JavaSc ...
- responseBody注解可以直接返回字符串 && springMVC Controller get请求返回字符串是中文乱码解决
//获取商品描述信息(html片段)字符串返回给前台填充html @RequestMapping(value="/item/desc/{itemId}",produces=Medi ...
- bzoj 4069 [Apio2015]巴厘岛的雕塑 dp
[Apio2015]巴厘岛的雕塑 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 494 Solved: 238[Submit][Status][Dis ...
- Python学习笔记(Django篇)——3、创建第一个数据库模型
Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习. 第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...