毛星云版opencv简记

文章目录

      • argc,argv的具体含义
      • split()函数
      • merge()函数
      • 访问图像像素
      • 形态学滤波
      • 图像金字塔
      • 图像变换
      • 霍夫变换
      • 重映射
      • 直方图均衡化
      • 图像轮廓与图像分割修复
      • 多边形将轮廓包围
      • 图像的矩
      • 分水岭算法
      • 图像修补
      • 直方图与匹配
      • 反向投影
      • 模板匹配
    • feature2d组件
      • 角点检测
      • harris角点检测
      • 亚像素级角点检测
    • 特征检测与匹配
      • SURF算法
      • SURF特征提取
      • 寻找已知物体
      • ORB特征提取

argc,argv的具体含义

main(int argc,charargv[],char**env,第一个参数,int类型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在Vsiual Studio中默认值为1。第二个参数,char类型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。第三个参数是char **类型的env,为字符串数组。
毛星云版opencv简记_第1张图片毛星云版opencv简记_第2张图片

split()函数

毛星云版opencv简记_第3张图片

merge()函数

毛星云版opencv简记_第4张图片

访问图像像素

毛星云版opencv简记_第5张图片
毛星云版opencv简记_第6张图片
毛星云版opencv简记_第7张图片
毛星云版opencv简记_第8张图片

形态学滤波

方框滤波 -boxblur函数
均值滤波-blur函数
高斯滤波-GaussianBlur函数
中值滤波-medianBlur函数
双边滤波-bilateralFilter
形态学:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,Top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度。
腐蚀 erode
膨胀dilate
开运算:先腐蚀后膨胀
闭运算:先膨胀后腐蚀
形态学梯度:膨胀图与腐蚀图之差,保留轮廓边缘
顶帽:原图与开运算结果图之差。
黑帽:闭运算的结果图与原图之差。
毛星云版opencv简记_第9张图片
毛星云版opencv简记_第10张图片
修改morphologyEx的第三个参数,可以进行其他的形态学操作。
漫水填充:使用特定的颜色填充连通区域。floodFill函数。一个版本带mask,一个不带。

图像金字塔

pyrUp 与pyrDown 对图像向上向下采样。
resize函数将图像放大或者缩小,最直接的方法。
高斯金字塔:用来向下采样。拉普拉斯金字塔:用来从金字塔低层图像重建上层。
毛星云版opencv简记_第11张图片
阈值化
固定阈值操作:Threshold()函数
自适应阈值操作:adaptiveThreshold()函数。
边缘检测步骤:滤波,增强,检测。

图像变换

Candy算子:最优的边缘检测算法。
毛星云版opencv简记_第12张图片
高阶用法:
毛星云版opencv简记_第13张图片
sobel算子:主要用于边缘检测的离散微分算子,用来计算图像灰度函数的近似梯度。
Sobel函数使用扩展的Sobel算子,计算一阶、二阶、三阶或混合图像差分。
毛星云版opencv简记_第14张图片
Laplacian算子:n维欧几里得空间的一个二阶微分算子。定义为梯度的散度div。
毛星云版opencv简记_第15张图片

Scharr滤波器:配合Sobel算子的运算而存在。使用Scharr滤波器计算x或y方向的图像差分。
毛星云版opencv简记_第16张图片
毛星云版opencv简记_第17张图片

霍夫变换

快速准确地检测出直线或者圆。从图像中识别几何形状的基本方法之一。最基本的是从黑白图像中检测直线。(特征提取技术)在opencv中分为霍夫线变换与霍夫圆变换。
霍夫线变换(标准霍夫变换,多尺度霍夫变换,累计概率霍夫变换)
输入是边缘二值图像。
毛星云版opencv简记_第18张图片

标准霍夫变换HoughLines
毛星云版opencv简记_第19张图片

毛星云版opencv简记_第20张图片
累计概率霍夫变换:HoughLinesP()
毛星云版opencv简记_第21张图片

毛星云版opencv简记_第22张图片
霍夫圆变换 HoughCricles()
通过霍夫梯度法的方法解决圆变换的问题。
毛星云版opencv简记_第23张图片

毛星云版opencv简记_第24张图片

重映射

把一幅图像的某像素放置到另一个图片指定位置的过程。
remap()函数
毛星云版opencv简记_第25张图片

在这里插入图片描述
仿射变换
一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。常见的有:旋转,平移,缩放。
warpAffine()函数,做一些简单的重映射。
在这里插入图片描述

getRotationMatrix2D()函数,用于计算二维旋转变换矩阵。变换将旋转中心映射到它自身。
在这里插入图片描述

直方图均衡化

扩大图像的动态范围
equalizeHist()函数
毛星云版opencv简记_第26张图片

毛星云版opencv简记_第27张图片

图像轮廓与图像分割修复

寻找轮廓 findContours()函数
毛星云版opencv简记_第28张图片

绘制轮廓 drawContours()函数
毛星云版opencv简记_第29张图片

凸包
给定二维平面上的点集,将最外围的点连接起来构成的凸多边形。
寻找凸包 convexHull()函数
毛星云版opencv简记_第30张图片

毛星云版opencv简记_第31张图片

多边形将轮廓包围

用多边形来表示轮廓
返回外部矩形 boundingRect()函数
寻找最小外围矩形 minAreaRect()函数
寻找最小包围原型 minEnclosingCircle()函数
用椭圆拟合二维点集 fitEllipse()函数
逼近多边形曲线 approxPolyDP()函数

图像的矩

毛星云版opencv简记_第32张图片

矩的计算 moments()函数
可以计算形状的重心、面积,主轴和其他形状特征
计算轮廓面积 contourArea() 函数
计算整个轮廓或部分轮廓的面积
计算轮廓长度 arcLength()函数
毛星云版opencv简记_第33张图片
毛星云版opencv简记_第34张图片

分水岭算法

将图像边缘转化为“山脉”,将均匀区域转化为“山谷”,有助于分割目标。
毛星云版opencv简记_第35张图片

watershed()函数

毛星云版opencv简记_第36张图片

图像修补

被破坏的区域不是太大,并且在被破坏区域边缘包含足够多的纹理和颜色,那么图像修补技术可以很好地恢复图像。
inpaint()函数

在这里插入图片描述

直方图与匹配

计算直方图 calcHist()函数,用于计算一个或者多个阵列的直方图。
寻找最值 minMaxLoc()函数,找到全局最小值与最大值。(第二册p134)
直方图对比 compareHist()函数
毛星云版opencv简记_第37张图片

第三个参数是选择距离的标准,有4种方法。(示例程序第二册p140)

反向投影

就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征的方法。多用于在输入图像中查找与特定图像最匹配的点或者区域,即定位模板图像出现在输入图像的位置。
计算反向投影 calcBackProject()函数
通道复制 mixChannels()函数
毛星云版opencv简记_第38张图片

毛星云版opencv简记_第39张图片

模板匹配

模板匹配 matchTemplate()函数

毛星云版opencv简记_第40张图片

  1. 平方差匹配法
  2. 归一化平方差匹配法
  3. 相关匹配法
  4. 归一化相关匹配法
  5. 系数匹配法
  6. 化相关系数匹配法 (示例程序第二册p154)
    毛星云版opencv简记_第41张图片

在这里插入图片描述

feature2d组件

角点检测

图像特征分为三类:边缘、角点(感兴趣关键点)和斑点(感兴趣区域)。
某一点在任意方向的一个微小变动都会引起灰度很大的变化,称之为角点。
角点的另外描述:

  1. 一阶导数(灰度的梯度)的局部最大所对应的像素点。
  2. 两条及两条以上边缘的交点。
  3. 图像中梯度值和梯度方向的变化速率都很高的点。
  4. 角点处的一阶导数最大,二阶导数为0,指示了物体边缘变化不连续的方向。
    角点检测算法分为:基于灰度图像的角点检测,基于二值图像的角点检测,基于轮廓曲线的角点检测。

harris角点检测

harris角点检测是一种基于灰度图像的角点提取算法,稳定性高,运算速度较慢,角点信息有丢失和位置偏移现象。
cornerHarris()函数
毛星云版opencv简记_第42张图片

毛星云版opencv简记_第43张图片
harris角点检测与绘制实例(第二册P165)
Shi-Tomasi角点检测(对harris的改进)
确定图像强角点 goodFeaturesToTrack()函数

毛星云版opencv简记_第44张图片

goodFeaturesToTrack()函数可用来初始化一个基于点的对象跟踪操作。(示例程序P171)

毛星云版opencv简记_第45张图片

毛星云版opencv简记_第46张图片

亚像素级角点检测

进行几何测量,需要更高精度。需要坐标值,不是整数值。
寻找亚像素角点 cornerSubPix()函数

毛星云版opencv简记_第47张图片

毛星云版opencv简记_第48张图片

特征检测与匹配

毛星云版opencv简记_第49张图片

SURF算法

是尺度不变特征变换算法SIFT的加速版,标准的SURF比SIFT快好几倍。surf采用的是海森矩阵行列式近似值图像。

毛星云版opencv简记_第50张图片

绘制关键点函数 drawKeypoints()函数

毛星云版opencv简记_第51张图片

KeyPoint类 ,用于表示特征点

毛星云版opencv简记_第52张图片

示例程序第二册P187

毛星云版opencv简记_第53张图片

SURF特征提取

SURF算法为每个检测到的特征定义了位置和尺度,尺度值用于定义围绕特征点的窗口大小。
使用SURF进行特征点描述的主要是drawMatches方法和BruteForceMatcher类的应用。
drawMatches()函数
用于绘制相匹配的两个图像的关键点。

毛星云版opencv简记_第54张图片

毛星云版opencv简记_第55张图片

示例程序:SURF特征提取

毛星云版opencv简记_第56张图片

结果为一个Mat矩阵,行数与特征点向量中的元素个数是一致的。每行都是一个N维描述子的向量。

毛星云版opencv简记_第57张图片

示例程序第二册P193

毛星云版opencv简记_第58张图片

毛星云版opencv简记_第59张图片

使用FLANN进行特征点匹配
快速高效匹配(快速最邻近逼近搜索函数库)
DescriptorMatcher::match方法。

毛星云版opencv简记_第60张图片

示例程序第二册P196

毛星云版opencv简记_第61张图片

毛星云版opencv简记_第62张图片

寻找已知物体

在FLANN特征匹配的基础上,可利用Homography映射找出已知物体。

毛星云版opencv简记_第63张图片
寻找透视变换 findHomography()函数

毛星云版opencv简记_第64张图片

毛星云版opencv简记_第65张图片

毛星云版opencv简记_第66张图片

进行向量透视矩阵变换 perspectiveTransform()函数

毛星云版opencv简记_第67张图片

示例程序第二册P206

ORB特征提取

是brief的改进版
brief就是在特征点附近随机选取若干点对,将这些点的灰度值的大小组合成一个二进制串,将二进制串作为该特征点的特征描述子。ORB没有解决尺度不变性,只追求速度,一般应用在实时的视频处理中。ORB的速度是SIFT的100倍,是SURF的10倍。
示例程序第二册P211
毛星云版opencv简记_第68张图片

毛星云版opencv简记_第69张图片

你可能感兴趣的:(opencv,opencv)