OpenCV 图像亮度与对比度调整
在数字图像中,每个像素的值表示亮度(灰度图)或颜色强度(彩色图)。:整体的明暗程度。调亮会让所有像素变亮,调暗会让所有像素变暗。:图像中亮的部分与暗的部分差别的大小。对比度高,明暗差距大;对比度低,图像灰蒙蒙。:对比度系数 (>1 增强对比度,0~1 降低对比度):亮度偏移量 (>0 变亮,<0 变暗)
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. 练习任务
-
将 α 设置为 2.0,β 为 0,观察高对比度效果。
-
将 α 设置为 1.0,β 为 50,观察变亮效果。
-
将 α 设置为 0.5,β 为 -30,观察低对比度+变暗效果。
-
尝试用滑动条(
cv2.createTrackbar)动态调整 α 和 β。
✅ 重点记忆:
-
亮度:加法(β 控制)
-
对比度:乘法(α 控制)
-
推荐使用
cv2.convertScaleAbs(),能自动防止溢出。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)