如何使用Python编写曲线算法分别调整加载图像的对比度和亮度
Python实现图像对比度与亮度调节方案
完全可以通过Python实现你需要的对比度、亮度自定义调节效果,核心基于像素值映射逻辑,可灵活自定义调节参数适配不同需求。
效果参考


依赖安装
首先需要安装图像处理所需的第三方库:pip install opencv-python numpy
完整实现代码
线性调节(最常用的对比度+亮度直接调整)
import cv2 import numpy as np def adjust_contrast_brightness(img, alpha=1.0, beta=0): """ 调整图像对比度和亮度 :param img: 输入的OpenCV格式图像 :param alpha: 对比度系数,建议取值范围0~3,>1提升对比度,<1降低对比度 :param beta: 亮度偏移值,建议取值范围-100~100,正值提亮,负值压暗 :return: 调整后的图像 """ # 执行线性变换,自动裁剪像素值到0~255区间避免溢出 adjusted = cv2.convertScaleAbs(img, alpha=alpha, beta=beta) return adjusted # 调用示例 if __name__ == "__main__": # 加载本地图像 img = cv2.imread("你的本地图像路径.jpg") if img is None: print("图像加载失败,请检查路径是否正确") exit() # 自定义调节参数 contrast = 1.6 # 对比度提升1.6倍 brightness = 15 # 亮度提升15个单位 # 应用调节效果 res = adjust_contrast_brightness(img, alpha=contrast, beta=brightness) # 对比展示效果 cv2.imshow("原始图像", img) cv2.imshow("调整后图像", res) cv2.waitKey(0) cv2.destroyAllWindows() # 保存调整后的图像到本地 cv2.imwrite("调整后图像.jpg", res)
自定义曲线调节(非线性调节,适配特殊效果需求)
如果需要实现类似修图工具的自定义曲线调节效果,可以通过自定义像素映射表实现,示例如下:
def custom_curve_adjust(img, curve_rule): # 生成0~255全范围像素映射表 lookup_table = np.array([curve_rule(i) for i in range(256)], dtype=np.uint8) # 应用映射表到整张图像 return cv2.LUT(img, lookup_table) # 示例:S型曲线,增强明暗层次同时保留灰阶过渡 def s_curve(x): return 255 * (1 / (1 + np.exp(-0.05 * (x - 127)))) # 调用方式 # res = custom_curve_adjust(img, s_curve)
内容的提问来源于stack exchange,提问作者Eslam Said Khashb
相关产品推荐
相关产品推荐

