首页 > 软件开发 > PYTHON >

python通过opencv调整图片亮度和对比度

来源:互联网 2023-03-16 19:13:34 388

对图片的处理过程处理中,调整对比度和亮度是基本的要求,方法有很多,Jvk办公区 - 实用经验教程分享!

比如亮度可以转换颜色空间调整亮度值,对比度也可以有线性和非线性方法,Jvk办公区 - 实用经验教程分享!

这里是最简单的线性方法。Jvk办公区 - 实用经验教程分享!

工具/原料

  • opencv3 python3
  • pycharm win7环境

方法/步骤

  • 1

    本文的亮度对比度是线性的方法,其实就是初中数学的Jvk办公区 - 实用经验教程分享!

    线性函数y= kx b方法。Jvk办公区 - 实用经验教程分享!

    写的专业一点:Y(x,y) = k*X(x,y) bX(x,y)表示图像(x行,y列)颜色值Jvk办公区 - 实用经验教程分享!

    Y(x,y)表示目标图像(x行,y列)颜色值Jvk办公区 - 实用经验教程分享!

    系数k是变换倍数(k>0)代表对比度系数b是亮度偏置Jvk办公区 - 实用经验教程分享!

    根据百度百科对比度的解释:Jvk办公区 - 实用经验教程分享!

    对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,差异范围越小代表对比越小。Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 2

    上代码:Jvk办公区 - 实用经验教程分享!

    import cv2 as cvimport numpy as npimport copyimport randomfrom PIL import ImageStat #ImageStatimg = cv.imread('c:\\meiping1.png')cv.imshow('img', img)rows, cols, channel = img.shapedst = img.copy()Jvk办公区 - 实用经验教程分享!

    生成一幅图像并复制一份拷贝 防止数据影响。Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 3

    一般情况Jvk办公区 - 实用经验教程分享!

    此处a代表 系数k 对比度Jvk办公区 - 实用经验教程分享!

    b是亮度偏置Jvk办公区 - 实用经验教程分享!

    一般 a取值 0--3 不宜太大。Jvk办公区 - 实用经验教程分享!

    a = 1.3Jvk办公区 - 实用经验教程分享!

    b = 3Jvk办公区 - 实用经验教程分享!

    for i in range(rows):Jvk办公区 - 实用经验教程分享!

    for j in range(cols):Jvk办公区 - 实用经验教程分享!

    for c in range(3):Jvk办公区 - 实用经验教程分享!

    color = (float)img[i, j][c] * a bJvk办公区 - 实用经验教程分享!

    if color > 255:Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 255Jvk办公区 - 实用经验教程分享!

    elif color 0:Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 0Jvk办公区 - 实用经验教程分享!

    cv.imshow('dst', dst)Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 4

    调整参数 a = 0.5 b = 3 不变Jvk办公区 - 实用经验教程分享!

    可以看出 图片变暗了很多 说明有效果!Jvk办公区 - 实用经验教程分享!

    a = 1.3Jvk办公区 - 实用经验教程分享!

    b = 3Jvk办公区 - 实用经验教程分享!

    for i in range(rows):Jvk办公区 - 实用经验教程分享!

    for j in range(cols):Jvk办公区 - 实用经验教程分享!

    for c in range(3):Jvk办公区 - 实用经验教程分享!

    color = (float)img[i, j][c] * a bJvk办公区 - 实用经验教程分享!

    if color > 255:Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 255Jvk办公区 - 实用经验教程分享!

    elif color 0:Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 0Jvk办公区 - 实用经验教程分享!

    cv.imshow('dst', dst)Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 5

    调整参数 a = 0.5 b = 80Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    可以看出 图片变亮了但没有像调整对比度那么快的变化率 说明有效果!Jvk办公区 - 实用经验教程分享!

    缺点他是整体变量,类似有一层白雾。Jvk办公区 - 实用经验教程分享!

    a = 1.3Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    b = 80Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    for i in range(rows):Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    for j in range(cols):Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    for c in range(3):Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    color = (float)img[i, j][c] * a bJvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    if color > 255:Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 255Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    elif color 0:Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    dst[i, j][c] = 0Jvk办公区 - 实用经验教程分享!

    Jvk办公区 - 实用经验教程分享!

    cv.imshow('dst', dst)Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 5此文章未经授权抓取自百度经验
  • 6

    小结:Jvk办公区 - 实用经验教程分享!

    对比度不宜过大,线性调整的方法是一种比较简单的方法,不太适合复杂场景的对比度设置和亮度调整,但简单易用。Jvk办公区 - 实用经验教程分享!

    通过y=kx b实现 对比度亮度调节Jvk办公区 - 实用经验教程分享!

    最后给出一个Jvk办公区 - 实用经验教程分享!

    对比度a = 2 亮度 b=10的图片可以看出图片变化很剧烈。Jvk办公区 - 实用经验教程分享!

    python通过opencv调整图片亮度和对比度Jvk办公区 - 实用经验教程分享!

  • 注意事项

    • 对比度系数不要过大 一般为 0--3
    • 作为一种线性方法 不太适合复杂场景的对比度设置和亮度调整

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Jvk办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码