1、固定阈值(c++)
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
第一个参数为输入矩阵
第二个参数为输出矩阵
第三个为阈值
第四个为最大值(只与0,1两种类型有关)
第五个为类型,类型取值如下:
0: CV_THRESH_BINARY 当前点值大于阈值时,取Maxval,也就是第四个参数,下面再不说明,否则设置为0
1: CV_THRESH_BINARY_INV 当前点值大于阈值时,设置为0,否则设置为Maxval
2: CV_THRESH_TRUNC 当前点值大于阈值时,设置为阈值,否则不改变
3: CV_THRESH_TOZERO 当前点值大于阈值时,不改变,否则设置为0
4: CV_THRESH_TOZERO_INV 当前点值大于阈值时,设置为0,否则不改变
大津法(类间最大方差,OSTU)
CV_THRESH_OTSU(比较常用)
2 、自适应阈值(python)
– cv2.ADPTIVE_THRESH_MEAN_C:阈值取自相邻区域的平均值
– cv2.ADPTIVE_THRESH_GAUSSIAN_C:阈值取值相邻区域的加权和,权重为一个高斯窗口。
• Block Size - 邻域大小(用来计算阈值的区域大小)。
• C - 这就是是一个常数,阈值就等于的平均值或者加权平均值减去这个常数。
th3 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
c++与python版本差不多类似 ,output的位置和选择的参数定义有些许不同。