blur (均值滤波)
均值滤波是典型的线性滤波算法, 主要方法为领域平均法(即用一片图像区域的各个像素的平均值来代替原图像中的各个像素值)
缺点: 不能很好的保护图像细节, 在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊。
函数原型:
void blur(InputArray src, OutputArrary dst, Size ksize , Point anchor=Point(-1, -1), int borderType = BORDER_DEFAULT)
ksize : 核大小(kerneal size ), 有点类似卷积核
阈值化
阈值可以被视为最简单的图像分割方法(基于图像中物体与背景之间的灰度差异)。
为了从图像中提取我们需要的部分, 应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并进行相应的判断。一旦找到了需要分割的物体的像素点,可以对这些像素点设定一些特定的值来表示。可以将物体的像素点的灰度值设为 ”0“ (黑色), 其他像素点的灰度值为 ”255“ (白色)
threshold (固定阈值操作)
对灰度图像进行阈值操作,得到二值图像
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
src: 输入单通道数组
dst: 处理后的结果
thresh: 阈值的具体值
maxval: 当像素值满足条件时,给该像素赋的值
type : CV_THRESH_BINARY 、CV_THRESH_BINARY、CV_THRESH_BINARY_INV
寻找轮廓
findContours(InputArray img, OutputArray conours, OutputArray hierarchy, int mode, int method, Point offset=Point())
img: 输入图像, 需要为8 位 单通道图像
contours: 每个轮廓为一组点向量
hierarchy:
mode: 轮廓检索模式,。 详细介绍如下
method: 轮廓的近似办法
CHAIN_APPROX_NONE : 获取每个轮廓的每个像素, 相邻的两个点的像素位置不超过 1
CHAIN_APPROX_SIMPLE: 压缩水平方向, 垂直方向, 对角线方向的元素(一个矩形只需要 4 个点来保存轮廓信息)