OpenCV二值化方法

网名:无名   QQ:16349023 email:mengwzy@qq.com

以前很少写教程,写的可能有点乱希望大对家有帮助

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


其函数原型如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)  

参数信息:

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

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

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

第四个参数,double类型的maxval,当第五个参数阈值类型type取 THRESH_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,否则不改变

官方解释如下图:

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

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. int nY20_thresh=96;  
  2. int nY20_MaxThesh=255;  
  3. void _onY20thresh(int,void*){  
  4.     Mat src;  
  5.     m_Mat.copyTo(src);  
  6.   
  7.     Mat dst,edge,gray;    
  8.   
  9.     // 【1】创建与src同类型和大小的矩阵(dst)    
  10.     dst.create( src.size(), src.type() );    
  11.   
  12.     // 【2】将原图像转换为灰度图像    
  13.     cvtColor( src, gray, CV_BGR2GRAY );    
  14.   
  15.     // 【3】先用使用 3x3内核来降噪    
  16.     blur( gray, edge, Size(3,3) );    
  17.   
  18.     //type选THRESH_BINARY,大于阈值的设置为maxval(255),其它置0  
  19.     threshold(edge, dst, nY20_thresh, 255, THRESH_BINARY);  
  20.   
  21.   
  22.     CVShow("threshold二值化灰图",dst,400,400);  
  23.   
  24.   
  25. }  

效果如下:



threshold方法一般用于将图像二值化后,检索轮廓,或简单的目录提取。 这章就到这里希望对大家有帮助。

原文网址:http://blog.csdn.net/lbd2008/article/details/6954575

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值