OpenCV常用函数

主要讲函数的功能,实现(文字叙述),参数和返回值(如果有)


inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray dst)

功能

类似于threshold()函数,但是inRange()可以实现多通道二值化操作,将两段阈值内的像素值设为白色,之外的设为黑色

实现

遍历整个图片,检查像素值是否在阈值之间,后续进行相应的操作

参数

参数1:输入要处理的图像,可以为单通道或多通道

参数2:包含下边界的数组或标量。

参数3:包含上边界数组或标量

参数4:输出图像,与输入图像src尺寸相同且为CV_8U类型

请注意:该函数输出的dst是一幅二值化之后的图像

OpenCV中的inRange()


blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT)

功能

blur:卷积(人话:模糊图像)

实现

图像卷积可以看成是一个窗口区域在另外一个大的图像上移动,对每个窗口覆盖的区域都进行点乘得到的值作为中心像素点的输出值

窗口的移动是从左到右,从上到下

窗口可以理解成一个指定大小的二维矩阵,里面有预先指定的值

参数

参数1:原图像

参数2:输出图像

参数3:模糊的程度(我是这么理解的),越大越模糊

参数4:被平滑的点(看不懂)

参数5:边界模式(看不懂)

【OpenCV 4】图像卷积操作(Blur)


GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT)

功能

模糊图像

实现

用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

参数

参数1:输入图像

参数2:输出图像

参数3:高斯内核大小(模糊程度)

参数4:高斯核函数在X方向上的标准偏差

参数5:高斯核函数在Y方向上的标准偏差,如果sigmaY是0,则函数会自动将sigmaY的值设置为与sigmaX相同的值,如果sigmaXsigmaY都是0,这两个值将由ksize.widthksize.height计算而来

参数6:推断图像外部像素的某种便捷模式

opencv学习(二十)之高斯滤波GaussianBlur()


dilate(InputArray src,OutputArray dst, InputArray kernel, Point anchor, int iterations, int borderType, constScalar& borderValue)

功能

模糊图像,处理缺陷问题(将原本不联通的位置变为联通)

实现

类似于一个卷积的过程,假设有图像矩阵A以及结构元素B(注意,B的形状、尺寸没有限制),B在A矩阵上依次移动,每个位置上B所覆盖元素的最大值替换B的中心位置值(即锚点处),即为膨胀的过程

参数

参数1:输入图像

参数2:输出图像

参数3:用于在原图上计算的矩形大小

参数4:开始计算的点

参数5:执行次数

参数6:推断边缘类型(看不懂)

参数7:边缘值(看不懂)

形态学处理(一)膨胀(dilate)与腐蚀(erode)


erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor, int iterations, int borderType, constScalar& borderValue

功能

用来处理毛刺问题,原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域

实现

腐蚀的过程与膨胀一致,区别在于用最小值替换中心位置值

参数

参数1:输入图像

参数2:输出图像

参数3:用于在原图上计算的矩形大小

参数4:开始计算的点

参数5:执行次数

参数6:推断边缘类型(看不懂)

参数7:边缘值(看不懂)

形态学处理(一)膨胀(dilate)与腐蚀(erode)


getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1))

功能

返回指定形状和尺寸的结构元素

实现

创建指定类型的Mat,然后返回

参数

参数1:内核形状

参数2:内核大小

参数3:锚点位置

返回值

一个Mat

opencv getStructuringElement函数


Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT)

功能

用作边缘检测

实现

根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘

参数

参数1:输入图像

参数2:目标图像

参数3:输出图像的深度

参数4:x 方向上的差分阶数

参数5:y方向上的差分阶数

参数6:Sobel核的大小

参数7:计算导数值时可选的缩放因子

参数8:在结果存入目标图(第二个参数dst)之前可选的delta值

参数9:边界模式

sobel算子原理与实现


Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)

功能

锐化增强图像

实现

对图像求二阶导数

参数

参数1:输入图像

参数2:输出图像

参数3:输出图像的深度

参数4:拉普拉斯核的大小

参数5:是否对图像进行放大或者缩小

参数6:是否在输出的像素中加上一个量

参数7:处理边界的方式

拉普拉斯-Laplacian


floodFill(InputOutputArray image, InputOutputArray mask, Point seedPoint,Scalar newVal, Rect* rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4)

功能

填充联通区域

实现

漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域

参数

参数1:输入图像

参数2:输出图像

参数3:漫水填充算法的起始点

参数4:重绘区域像素的新值

参数5:设置floodFill函数将要重绘区域的最小边界矩形区域

参数6:当前观察像素值与其部件邻域像素值或者待加入该部件的种子像素之间的亮度或颜色之负差(lower brightness/color difference)的最大值

参数7:当前观察像素值与其部件邻域像素值或者待加入该部件的种子像素之间的亮度或颜色之正差(lower brightness/color difference)的最大值

参数8:操作标志符

【OpenCV入门教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)

上一篇:opencv-InputArray和OutputArray


下一篇:opencv solvepnp函数各种方法比较