对于阈值的设置我们很难确定,通过固定阈值很难将目标区域和背景区域分隔开来。在实际使用中,通常是使用自适应阈值来完成目标的分隔。自适应阈值对于图像块中明亮变化明显的区域通常设置的会过大或者过小,进而保证图像中各个像素的阈值会随着周围邻域块的变化而变化。
OpenCV提供了adaptiveThreshold函数,该函数有两种自适应参数代表阈值计算方法,函数接口如下:
1 | void cv::adaptiveThreshold(InputArray src, |
参数说明:
src : 输入的图像(单通道8位图像)
dst : 表示输出图像(尺寸和类型和输入图像一样)
maxval : 表示预设最大值
adaptiveMethod: 计算阈值的算法有两种ADAPTIVE_THRESH_MEAN_C或者ADAPTIVE_THRESH_GUASSIAN_C
thresholdType: 阈值类型只有两种THRESH_BINARY 或者THRESH_BINARY_INV
blockSize: 表示邻域大小
C: 从均值或加权均值提取的数,可以是负数
示例代码如下:
1 |
|