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

官方解释例如以下图:

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm5zd29yZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

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); }

效果例如以下:

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

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

上一篇:移动端问题探索-3


下一篇:关于rem的学习