• Opencv2教程一:图像变换之阈值二值threshold


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

    曾经非常少写教程,写的可能有点乱希望大对家有帮助

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


    其函数原型例如以下:

    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,否则不改变

    官方解释例如以下图:

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

    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) );  
    
    	//type选THRESH_BINARY。大于阈值的设置为maxval(255),其他置0
    	threshold(edge, dst, nY20_thresh, 255, THRESH_BINARY);
    
    
    	CVShow("threshold二值化灰图",dst,400,400);
    
    
    }

    效果例如以下:



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


  • 相关阅读:
    文件方式实现完整的英文词频统计实例
    组合数据类型练习,英文词频统计实例上
    英文词频统计预备,组合数据类型练习
    凯撒密码、GDP格式化输出、99乘法表
    字符串基本操作
    datetime处理日期和时间
    中文词频统计
    文件方式实现完整的英文词频统计实例
    组合数据类型练习,英文词频统计实例上
    英文词频统计预备,组合数据类型练习
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5397965.html
Copyright © 2020-2023  润新知