You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python+OpenCV按指定标量调整图像特定区域的亮度

使用Python+OpenCV调整图像指定区域亮度的实现方法

示例参考

输入图像:
输入图像
输出效果(调整框选区域亮度):
输出图像

实现逻辑

  • 读取目标图像,定位需要调整亮度的感兴趣区域(ROI)
  • 单独对ROI区域的像素做亮度调整,自动截断像素值到0-255的有效范围,避免色彩异常
  • 将调整后的ROI贴回原图对应位置,其余区域像素完全不修改

完整可运行代码

import cv2
import numpy as np

# 读取图像
img = cv2.imread('input.jpg')
if img is None:
    raise ValueError("图像读取失败,请检查文件路径是否正确")

# 配置参数
brightness_offset = 60  # 正数为调亮,负数为调暗,取值范围建议-255~255
# 固定ROI坐标:左上角(x1,y1)、右下角(x2,y2),可根据需求自行修改
x1, y1 = 200, 150
x2, y2 = 450, 300

# --------------------------
# 可选:交互选择ROI区域,替换上面的固定坐标配置即可
# roi_params = cv2.selectROI('框选调整区域', img, showCrosshair=True, fromCenter=False)
# x1, y1, w, h = roi_params
# x2 = x1 + w
# y2 = y1 + h
# --------------------------

# 调整ROI亮度
roi = img[y1:y2, x1:x2]
adjusted_roi = cv2.add(roi, np.full(roi.shape, brightness_offset, dtype=np.uint8))

# 替换回原图
img[y1:y2, x1:x2] = adjusted_roi

# 输出结果
cv2.imshow('处理结果', img)
cv2.imwrite('output.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

关键说明

  • 使用cv2.add做亮度调整:该方法会自动将超过255的像素值截断为255,低于0的截断为0,不需要手动做范围判断,避免像素溢出导致的颜色错乱
  • ROI提取采用numpy切片方式,修改切片内容后直接赋值回原图对应位置即可,不会影响其他区域的像素
  • 若需要调整多块区域,重复ROI提取、调整、替换的步骤即可

内容的提问来源于stack exchange,提问作者Kimwaga Makono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:36:04