void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C);
对一幅灰度图像进行二值化,该函数支持就地操作,该函数用下面的公式对一幅灰度图像进行二值化:
第一个参数,InputArray src,原图,即输入图像,是一个8位单通道的图像;
第二个参数,OutputArray dst,目标图像,与原图像具有同样的尺寸与类型;
第三个参数,double maxValue,分配给满足条件的像素的非零值;
第四个参数,int adaptiveMethod,自适应阈值的方法,通常有以下几种方法;
第六个参数,int blockSize,像素邻域的大小,用来计算像素的阈值,blockSize必须为奇数,例如,3,5,7等等;
第七个参数,double C,从平均数或加权平均数减去常量。通常,它是正的,但也可能是零或负数。
(1)THRESH_BINARY
正向二值化,如果当前的像素值大于设置的阈值(thresh),则将该点的像素值设置为maxval;否则,将该点的像素值设置为0;具体的公式如下
(2)THRESH_BINARY_INV
反向二值化,如果当前的像素值大于设置的阈值(thresh),则将该点的像素值设置为0;否则,将该点的像素值设置为maxval,具体的公式如下
(3)THRESH_TRUNC
如果当前的像素值大于设置的阈值(thresh),则将该点的像素值设置为threshold;否则,将该点的像素值不变,具体的公式如下
(4)THRESH_TOZERO
如果当前的像素值大于设置的阈值(thresh),则将该点的像素值不变;否则,将该点的像素值设置为0,具体的公式如下
(5)THRESH_TOZERO_INV
如果当前的像素值大于设置的阈值(thresh),则将该点的像素值设置为0;否则,将该点的像素值不变,具体的公式如下
(6)THRESH_MASK
(7)THRESH_OTSU,使用Otsu算法选择最佳阈值。
(8)THRESH_TRIANGLE,使用三角算法选择最佳阈值。
原文:https://www.cnblogs.com/pacino12134/p/11429379.html