Contents

opencv 核心函数整理

Contents

本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。

1.HighGUI模块做为高层GUI图形用户界面模块,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图像交互界面的接口等内容。

  • imread:用于读取文件中的图片到opencv中
  • imshow : 在指定的窗口中显示一幅图像
  • namedWindow:用于创建一个窗口
  • imwrite:输出图像到文件
  • createTrackbar:用于创建一个可以调整数值的轨迹条
  • getTrackbarPos:用于获取轨迹条的当前位置
  • SetMouseCallback:为指定的窗口设置鼠标回调函数

2.opencv中的core组件是核心功能模块主要包含以下的内容:数据基本结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能和系统函数和宏、与OpenGL的互操作。

  • Mat::Mat() : Mat类的构造函数
  • Mat::Create() : Mat类的成员函数,可用于Mat类的初始化操作
  • Point : 用于表示点的数据结构
  • Scalar : 用于表示颜色的数据结构
  • Size : 用于表示尺寸的数据结构
  • Rect : 用于表示矩阵的数据结构
  • CvtColor() : 用于颜色的空间转换

3.操作图像中的像素、设置感兴趣区域(ROI)、进行图像混合、分离颜色通道、进行多通道图像混合、调整图像的对比对和亮度值、对图像进行离散傅里叶变换、输入输出XML 和YAML文件

  • addWeighted : 计算两个数组(图像阵列)的加权和

  • split : 将一个多通道数组分离成单个通道数组

  • merge : 将多个数组组合合并成一个多通道的数组

  • dft : 对一维或者二维浮点数数组进行正向或反向离散傅里叶变换

  • getOptimalDFTSize : 返回给定向尺寸的傅里叶最优化尺寸大小

  • copyMakeBorder : 扩充图像边界

  • magnitude : 计算二维矢量的幅值

  • log:计算每个数组元素绝对值的自然对数

  • normalize:进行矩阵归一化

  • FileStorage类:进行文件操作的类

4.imgproc组件是Image和Process这两个单词的缩写,即图像处理模块,这个模块有线性和非线性的图像滤波、图像的几何变换、其他(Miscellaneous)图像转换、直方图相关、结构分析和形状描述、运动分析和对象追踪、特征检测、目标检测等内容。

  • boxFilter : 使用方框滤波来模糊一张图片
  • blur : 对输入的图像进行均值滤波操作
  • GaussianBlur : 用高斯滤波器来模糊一张图片
  • medianBlur : 使用中值滤波器来模糊一张图片
  • bilateralFilter : 使用双边滤波器来模糊处理一张图片
  • dilate : 使用像素领域内的局部极大运算符来膨胀一张图片
  • erode : 使用像素领域内的局部极小运算符来腐蚀一张图片
  • morphologyEx : 利用基本的膨胀和腐蚀技术,来执行更加高级形态学变换,如开闭运算、形态学梯度、顶帽、黑帽等,也可以实现最基本的图像膨胀和腐蚀
  • floodFill : 用指定的颜色从种子点开始填充一个连接域,实现漫水填充算法
  • pyrUp : 向上采样并模糊一张图片,说白了就是放大一张图片
  • pyrDown : 向下采样并模糊一张图片,说白了就是缩小一张图片
  • Threshold : 对单通道数组应用固定阈值操作
  • adaptiveThreshold : 对矩阵采用自适应阈值操作

5.图像变换(image transfrom)即将一幅图像转变成图像数据的另一种表现形式。变换最常见的例子就是傅里叶变换(Fourier transfrom),即将图像转换成源图像数据的另一种表示形式。这类操作的结果仍然保存为OpenCV图像结构的形式,但是新图像的每个单独像素表示原始输出图像的频谱分量,而不是通常所考虑的空间分量。基于OpenCV的边缘检测、霍夫变换、重映射、仿射变换、直方图均衡化。

  • Canny : 利用canny算子来进行图像的边缘检测
  • Sobel : 使用拓展的Sobel算子,来计算一阶、二阶、三阶或混合图像差分
  • Laplacian : 计算出图像经过拉普拉斯变换后的结果
  • Scharr : 使用Scharr滤波器运算符计算X或Y方向的图像差分
  • HoughLinesP : 找出采用标准霍夫变换的二值图像线条
  • HoughCireles : 采用累计概率霍夫变换(PPHT)来找出二值图像中的直线
  • remap : 根据指定的映射形式,将源图像进行重映射几何变换
  • warpAffine : 依据公式对图像做仿射变换
  • getRotationMatrix2D : 计算二维旋转变换矩阵
  • equalizeHist : 实现图像的直方图均衡化

6.图像轮廓与图像分割修复,虽然Canny之类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但是并没有将轮廓作为一个整体。所以下一步便是把这些边缘像素组装成轮廓。查找并绘制轮廓、寻找物体的凸包、使用多边形逼近物体、认识图像的矩、利用OpenCV进行图像修补。

  • findContours : 在二值图像中寻找轮廓
  • drawContours : 在图像中绘制外部或内部轮廓
  • convexHull : 寻找图像点集中的凸包
  • BoundingRect : 计算并返回指定点集最外面(up -right)的矩形边界
  • minAreaRect : 寻找可旋转的最小面积的包围矩形
  • minEnclosingCircle : 利用一种迭代算法,对给定的2D点集,寻找面积最小的可包围他们的圆形
  • fitEllipse : 用椭圆拟合二维点集合
  • approxPolyDP:用指定精度逼近多边形曲线
  • moments : 计算多边形和光栅形状的最高达三阶的所有矩
  • contourArea : 计算整个轮廓或部分轮廓的面积
  • arcLength : 计算封闭轮廓的周长或曲线的长度
  • watershed : 实现分水岭算法
  • inpaint : 进行图像修补,从扫描的照片中清除灰尘和划痕,或者从静态图像或视频中去除不需要的物体。

7.直方图和匹配,在进行物体图像和视频信息分析的过程中,我们常常会习惯于将眼中看到的物体用直方图(histogram)表示出来,得到比较直观的数据官感展示。直方图可以用来描述各种不同的参数和事物,如物体的彩色分布、物体边缘梯度模板、以及表示目标位置的当前假设的概率分布。

  • calcHist : 计算一个或多个阵列的直方图
  • minMaxLoc : 在数组中找到全局最小值和最大值
  • compareHist : 对两幅直方图进行比较
  • calcBackProject : 计算直方图反向投影
  • mixChannels : 由输入参数复制某通道到输出参数特定的通道中
  • matchTemplate : 匹配出和模板重叠的图像区域

8.feature2d组件,也就是Features 2D,是OpenCV的2D功能框架。自OpenCV以来的众多著名的特征检测算子(如SIFT、SURF、ORB算子等)所依赖的稳定版的特征检测与匹配相关的核心源代码已经从OpenCV3中移除了,转移到xfeature2d的第三方库当中了。特征检测器(Feature Detectors)通用接口、描述符提取器(Descriptor Extractors)通用接口、描述符匹配器(Descriptor Matchers)匹配器通用接口、关键点绘制函数和匹配功能绘制函数。

  • cornerHarris : 运行Harris角点检测算子来进行角点检测
  • goodFeaturesToTrack : 结合Shi-Tomasi 算子确定图像的强角点
  • cornerSubPix: 寻找亚像素角点位置

9.特征点的检测和匹配是计算机视觉中非常重要的技术之一。在物体检测、视觉跟踪、三维重构等领域都有很广泛的应用。

  • SURF类 、SurfFeatureDetector类 、SurfDescriptorExtractor类 : 三者等价,同用与在OpenCV中进行SURF特征检测
  • drawKeypoints函数 :绘制关键点
  • drawMatches函数 :绘制出相匹配的两个图像的关键点
  • KeyPoint类:用于表示特征点的信息
  • BruteForceMatcher类:进行暴力匹配相关的操作
  • FlannBasedMatcher类:实现FLANN特征匹配
  • DescriptorMatcher::match函数:从每个描述符查询集中找到最佳匹配
  • findHomography函数:找到并返回源图像和目标图像之间的透视变换H
  • perspectiveTransfrom函数:进行向量透视矩阵变换
  • ORB类、OrbFeatureDetector类、OrbDescriptorExtractor类:三者等价,同用于在OpenCV中进行ORB特征检测

参考:

opencv核心函数名单