Cv2.Threshold 是 OpenCVSharp 里的全局阈值化函数,作用:
- 输入:单通道灰度图(常用)或 8bit/32bit 浮点多通道图
- 功能:用同一个阈值对整张图所有像素做 “二值化 / 截断 / 置零” 等操作
- 输出:和原图大小、类型一致的图像
- 典型用途:二值化、图像分割、轮廓提取、去背景、文字增强
double Threshold(
InputArray src,
OutputArray dst,
double thresh,
double maxval,
ThresholdTypes type
);
返回值:实际使用的阈值(手动阈值 = 你给的 thresh;Otsu / 三角 = 算法算出的值)
三、参数详细解释
1)src(输入图像)
- 类型:
Mat/InputArray - 要求:
- 常用:单通道灰度图(Gray)
- 也支持:8bit(
CV_8U)或 32bit 浮点(CV_32F)多通道
- 建议:做二值化前务必先转灰度:
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
2)dst(输出图像)
- 类型:
Mat/OutputArray - 特性:
- 无需手动创建,函数内部自动分配
- 尺寸、通道、数据类型 和 src 完全一致
3)thresh(手动阈值)
- 范围:
0 ~ 255(对 8bit 图) - 含义:你设定的全局分割阈值
- 特殊:用 Otsu / 三角法 时,thresh 直接写 0,函数会自动计算最佳阈值
4)maxval(最大值)
- 范围:常用
255(白色) - 仅对 THRESH_BINARY / THRESH_BINARY_INV 生效:
- 满足条件的像素 → 设为 maxval
- 不满足 → 0
5)type(阈值类型,核心)
枚举:ThresholdTypes,共 5 基础类型 + 2 自动阈值标志
四、5 种基础阈值类型(公式 + 效果 + 场景)
设:src = 原像素值,T = thresh,M = maxval
1. THRESH_BINARY(最常用:正向二值化)
dst = src > T ? M : 0
- 效果:> 阈值 → 白;≤阈值 → 黑
- 场景:提取亮目标(白纸黑字、亮物体)
2. THRESH_BINARY_INV(反向二值化)
dst = src > T ? 0 : M
- 效果:> 阈值 → 黑;≤阈值 → 白
- 场景:提取暗目标(黑底白字、暗物体)
3. THRESH_TRUNC(截断:过亮压制)
dst = src > T ? T : src
- 效果:> 阈值 → 设为 T;其余不变
- 场景:抑制高光、过曝区域,保留暗部细节
4. THRESH_TOZERO(低于阈值置零)
dst = src > T ? src : 0
- 效果:> 阈值 → 保留原值;≤阈值 → 0
- 场景:去除暗背景、保留亮区域
5. THRESH_TOZERO_INV(高于阈值置零)
dst = src > T ? 0 : src
- 效果:> 阈值 → 0;≤阈值 → 保留原值
- 场景:去除亮背景、保留暗区域
五、自动阈值:Otsu 与 三角法(必掌握)
当光照不均、无法手动选阈值时,用标志位组合:
1)Otsu 大津法(THRESH_OTSU)
- 原理:自动找阈值,使前景 / 背景类间方差最大
- 前提:灰度直方图双峰(前景、背景分明)
- 用法:
type = ThresholdTypes.Binary | ThresholdTypes.Otsu,thresh=0
2)三角法(THRESH_TRIANGLE)
- 原理:基于直方图三角形几何拟合找阈值
- 前提:直方图单峰 / 弱双峰(光照不均、对比度低)
- 用法:
type = ThresholdTypes.Binary | ThresholdTypes.Triangle,thresh=0
public override Mat Execute(Mat image)
{
// ThresholdValue 是 “分界线”,MaxValue 是 “超过分界线后要赋值的目标值”。
//它们只有在 Binary 和 BinaryInv 模式下才会一起生效,其他模式下 MaxValue 完全没用。
/* 像素值 > 阈值(ThresholdValue)
* → 设置为 MaxValue
* 否则
* → 设置为 0
*/
Mat dst = new Mat();
Cv2.Threshold(image, dst, ThresholdValue, MaxValue, ThresholdType);
return dst;
}
若文章对您有帮助,可以激励一下我哦,祝您平安幸福!
| 微信 | 支付宝 |
|---|---|
![]() |
![]() |

