Opencv中文网

亮度对比度调整(ConvertTo)

这是最简单、最高效、最常用的图像亮度与对比度调节方法,专门用于画面过暗、过亮、发灰、模糊、对比度不足等视觉优化场景,是图像处理中最基础的画质增强工具。

代码核心就是:src.ConvertTo(dst, -1, alpha, beta)

图像亮度、对比度调节公式:

输出图像 = 原图像 × 对比度 (alpha) + 亮度 (beta)

  • alpha(对比度):控制画面 “清晰 / 发灰”
  • beta(亮度):控制画面 “亮 / 暗”
src.ConvertTo(
    OutputArray mtx, 
    int rtype, 
    double alpha = 1, 
    double beta = 0
);

参数逐行详细解释

1. src

输入图像(彩色、灰度、二值图都可以)

2. dst

输出图像(自动创建,大小、通道与原图完全一致)

3. rtype = -1

-1 表示:输出图像类型与原图完全一样

不需要修改,固定写 -1 即可。

4. alpha(对比度系数)

  • 默认值:1.0(原图不变)
  • > 1:增强对比度(画面更清晰、更锐利)
  • < 1:降低对比度(画面发灰、变淡)
  • 常用范围:0.5 ~ 3.0

5. beta(亮度偏移)

  • 默认值:0(原图不变)
  • 正数:变亮
  • 负数:变暗
  • 常用范围:-50 ~ +100

数学原理:dst(x,y) = src(x,y) × alpha + beta,乘 alpha → 控制对比度,加 beta → 控制亮度

效果直观理解

alpha(对比度)

  • 0.5 → 图像变灰、变淡
  • 1.0 → 不变
  • 2.0 → 对比强烈、清晰

beta(亮度)

  • -50 → 整体变暗
  • 0 → 不变
  • +50 → 整体变亮

最常用参数组合:

增强亮度 + 增强对比度:alpha = 1.2; beta = 30;

画面发灰 → 提高对比度:alpha = 1.5; beta = 10;

图像过曝 → 降低亮度:alpha = 0.9; beta = -30;

优点

  • 速度极快(底层 C++ 优化)
  • 支持彩色图、灰度图
  • 简单、稳定、无副作用
  • 适合实时预览调节

注意事项

  1. alpha 不要太大(超过 3 会丢失细节)
  2. beta 不要太大(会导致纯白 / 纯黑)
  3. 自动防止像素溢出(自动截断 0~255)
  4. 不修改原图,输出新图
public override Mat Execute(Mat src)
{
    Mat dst = new Mat();
    // 两种写法相同
    // dst = src*alpha + beta
    src.ConvertTo(dst, -1, Alpha, Beta);
    return dst;
}

copyright @重庆教主 WPF中文网 联系站长:(QQ)23611316 (微信)movieclip (QQ群).NET小白课堂:864486030 | 本文由WPF中文网原创发布,谢绝转载 渝ICP备2023009518号-1