讲解C++中的adaptiveThreshold函数
时间: 2024-06-12 08:05:51 浏览: 84
adaptiveThreshold函数是OpenCV库中用于自适应阈值化的函数。该函数可以根据图像的局部特征动态地确定阈值,从而更好地处理图像。
函数原型如下:
```c++
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C);
```
参数解释:
- src:输入图像,单通道灰度图像。
- dst:输出图像,单通道二值图像。
- maxValue:二值化后的最大值,一般为255。
- adaptiveMethod:自适应方法,取值有以下两种:
- ADAPTIVE_THRESH_MEAN_C:使用邻域均值作为阈值。
- ADAPTIVE_THRESH_GAUSSIAN_C:使用邻域加权平均值作为阈值。
- thresholdType:二值化类型,取值有以下两种:
- THRESH_BINARY:大于阈值的像素点赋值为maxValue,小于等于阈值的像素点赋值为0。
- THRESH_BINARY_INV:大于阈值的像素点赋值为0,小于等于阈值的像素点赋值为maxValue。
- blockSize:邻域大小,奇数。
- C:常数项,阈值减去C。
函数实现原理:
对于每个像素点,以该点为中心取一个邻域块,根据邻域块内像素的平均值或加权平均值作为该像素点的阈值,判断该像素点是否大于阈值,若大于则将其置为maxValue,否则置为0。
函数示例:
```c++
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
Mat dst;
adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 11, 2);
imshow("src", src);
imshow("dst", dst);
waitKey();
```
该示例中,输入图像为test.jpg,输出图像为自适应阈值化后的二值图像。adaptiveMethod选择的是邻域均值法,邻域大小为11×11,常数项C为2。
阅读全文