opencv3入门学习--基本函数介绍

滤波

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: 轮廓的近似办法
在这里插入图片描述

标题仿射变换

在向量中进行一次线性变换(乘以一个矩阵) 并加上一个平移(加上一个向量), 变换为另一个向量的过程。

warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BORDER_CONSTANT, const Scalar & borderValue = Scalar())

通过转换矩阵转换 dst(x,y) = src(M11x + M12y + M13, M21x + M22y + M23)

参数:
src: 输入图像矩阵
dst: 输出图像矩阵
M : 2 x 3 转换矩阵
dsize: 输出图像尺寸
flags: 插值算法标识符(默认 INTER_LINEAR )

平移:

// 偏移矩阵 2 x 3, 类型 float32
Mat transformMat = Mat::eye(2, 3, CV_32F);
int m = max(w, h);

transformMat.at<float>(0, 2) = m / 2 - w / 2;  // x 方向偏移值
transformMat.at<float>(1, 2) = m / 2 - h / 2;  // y 方向偏移值

Mat warpImage(m, m, in.type());
warpAffine(in, warpImage, transformMat, warpImage.size(), INTER_LINEAR, BORDER_CONSTANT, Scalar(0));

获取旋转矩阵
getRotationMatrix2D(Point2f center, double angle, double scale)
center: 矩阵中心
angle : 旋转角度
scale : 比例

获取点向量围成的最小矩阵
Rect rect = boudingRect (inputArray points)

创建一个指定大小和类型的尺寸
Mat::eye (int rows, int cols, int type)

膨胀与腐蚀

这两个操作都是对图像中 高亮(白色) 区域而言, 膨胀则高亮区域增大, 腐蚀则高亮区域变小,暗黑区域变多(黑色区域增大)。

开运算与闭合运算

开运算: 分开对象。 相当于对图像先进行腐蚀运算再进行膨胀运算,可以消除离散点和"毛刺",可以将两个物体分开。
闭运算: 连接相邻对象。 相当于对图像先进行膨胀运算再进行腐蚀运行,可以填充图像的内部孔洞和图像的凹角点,可以把两个邻近的目标连接起来。

morphologyEx(const Mat &src, Mat &dst, int op, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)
op: MORPH_OPEN(开运算)、MORPH_CLOSE(闭运算)、MORPH_GRADIENT (形态学梯度)、 MORPH_TOPHAT (顶帽)、kernel: 运算内核,配合getStructuringElement函数使用

getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1))
shape: MORPH_RECT、MORPH_CORSS、MORPH_ELLIPSE(椭圆形);
size : 一般取 Size(3,3)

(文章转载自他人)阅读原文点击此处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值