1. 基础概念

在数字图像中,每个像素的值表示亮度(灰度图)或颜色强度(彩色图)。

  • 亮度(Brightness):整体的明暗程度。调亮会让所有像素变亮,调暗会让所有像素变暗。

  • 对比度(Contrast):图像中亮的部分与暗的部分差别的大小。对比度高,明暗差距大;对比度低,图像灰蒙蒙。

在数学上,亮度与对比度的调整公式为:

  • α (alpha):对比度系数 (>1 增强对比度,0~1 降低对比度)

  • β (beta):亮度偏移量 (>0 变亮,<0 变暗)


2. OpenCV 调整方法

方法 1:直接用公式


import cv2

# 读取图像
img = cv2.imread("test.jpg")

# 设置参数
alpha = 1.5  # 对比度 (1.0-3.0)
beta = 30    # 亮度 (-100 到 100)

# 调整
adjusted = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)

cv2.imshow("Original", img)
cv2.imshow("Adjusted", adjusted)
cv2.waitKey(0)
cv2.destroyAllWindows()

📌 cv2.convertScaleAbs() 的作用:

  • 执行公式 output = alpha*input + beta

  • 自动将结果转换为 0~255 的 uint8 类型(防止溢出)。


方法 2:手动计算(NumPy 运算)


import numpy as np

adjusted = np.clip(alpha * img + beta, 0, 255).astype('uint8')

  • np.clip():限制像素值在 0~255 范围内。


3. 参数调节建议

场景 α (对比度) β (亮度)
增强对比度 1.5~3.0 0
降低对比度 0.5~1.0 0
提亮 1.0 10~50
变暗 1.0 -10~-50

4. 练习任务

  1. 将 α 设置为 2.0,β 为 0,观察高对比度效果。

  2. 将 α 设置为 1.0,β 为 50,观察变亮效果。

  3. 将 α 设置为 0.5,β 为 -30,观察低对比度+变暗效果。

  4. 尝试用滑动条(cv2.createTrackbar)动态调整 α 和 β。


重点记忆

  • 亮度:加法(β 控制)

  • 对比度:乘法(α 控制)

  • 推荐使用 cv2.convertScaleAbs(),能自动防止溢出。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐