Threshold函数详解

threshold 方法是通过遍历灰度图中点,将图像信息二值化,处理过后的图片只有二种色值。

 

其函数原型如下:

double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)


参数信息:

第一个参数,InputArray类型的src,输入数组,填单通道 , 832位浮点类型的Mat即可。

第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放输出结果,且和第一个参数中的Mat变量有一样的尺寸和类型。

第三个参数,double类型的thresh,阈值的具体值。

第四个参数,double类型的maxval,当第五个参数阈值类型typeTHRESH_BINARY THRESH_BINARY_INV阈值类型时的最大值.

第五个参数,int类型的type,阈值类型,

其它参数很好理解,我们来看看第五个参数,第五参数有以下几种类型

0: THRESH_BINARY  当前点值大于阈值时,取Maxval,也就是第四个参数,下面再不说明,否则设置为0

1: THRESH_BINARY_INV 当前点值大于阈值时,设置为0,否则设置为Maxval

2: THRESH_TRUNC 当前点值大于阈值时,设置为阈值,否则不改变

3: THRESH_TOZERO 当前点值大于阈值时,不改变,否则设置为0

4: THRESH_TOZERO_INV  当前点值大于阈值时,设置为0,否则不改变

官方解释如下图:

 

下面是简单应用实例代码片段

int nY20_thresh=96;

int nY20_MaxThesh=255;

void _onY20thresh(int,void*){

Mat src;

m_Mat.copyTo(src);

 

Mat dst,edge,gray;  

 

// 1】创建与src同类型和大小的矩阵(dst)  

dst.create( src.size(), src.type() );  

 

// 2】将原图像转换为灰度图像  

cvtColor( src, gray, CV_BGR2GRAY );  

 

// 3】先用使用 3x3内核来降噪  

blur( gray, edge, Size(3,3) );  

 

//typeTHRESH_BINARY,大于阈值的设置为maxval(255),其它置0

threshold(edge, dst, nY20_thresh, 255, THRESH_BINARY);

 

 

CVShow("threshold二值化灰图",dst,400,400);

 

 

}


效果如下:

 


 

  • 17
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值