欢迎访问宙启技术站
智能推送

Python函数用于调整图像的亮度和对比度

发布时间:2023-06-15 00:58:12

Python是一个非常有趣和强大的编程语言,很多人用它来处理图像数据。这篇文章主要介绍Python函数用于调整图像的亮度和对比度,并给出具体实现代码。

1. 图像的亮度调整

图像的亮度是指图像中像素的亮度程度。如果一张图像太暗,我们就需要提高亮度;相反,如果一张图像太亮,我们就需要降低亮度。下面我们来介绍Python代码如何实现图像的亮度调整。

首先,我们需要导入图像处理库Pillow。

from PIL import Image

然后,我们需要定义一个函数来实现亮度调整。这个函数需要传入两个参数:image和brightness。

def adjust_brightness(image, brightness):

其中,image表示需要调整亮度的图像,brightness表示需要调整的亮度值。如果需要提高亮度,brightness的值应该大于1;相反,如果需要降低亮度,brightness的值应该小于1。

接下来,我们需要从传入的图像中获取像素数据,并遍历每个像素。

    pixels = image.load()
    width, height = image.size

    for x in range(width):
        for y in range(height):
            r, g, b = pixels[x, y]

然后,我们需要分别计算出每个像素的新R、G、B值。这个过程比较简单,只需要将原来的像素值乘以brightness就可以了。

            # 计算新的R、G、B值
            r_new = int(r * brightness)
            g_new = int(g * brightness)
            b_new = int(b * brightness)

最后,我们用新的像素值替换原来的像素值,并生成一张新的图像。

            # 用新的像素值替换原来的像素值
            pixels[x, y] = (r_new, g_new, b_new)

    # 生成新的图像
    new_image = Image.new("RGB", image.size)
    new_image.putdata(list(pixels))
    return new_image

完整的代码如下:

from PIL import Image

def adjust_brightness(image, brightness):
    # 获取像素数据
    pixels = image.load()
    width, height = image.size

    for x in range(width):
        for y in range(height):
            r, g, b = pixels[x, y]

            # 计算新的R、G、B值
            r_new = int(r * brightness)
            g_new = int(g * brightness)
            b_new = int(b * brightness)

            # 用新的像素值替换原来的像素值
            pixels[x, y] = (r_new, g_new, b_new)

    # 生成新的图像
    new_image = Image.new("RGB", image.size)
    new_image.putdata(list(pixels))
    return new_image

2. 图像的对比度调整

图像的对比度是指图像中不同亮度像素之间的差异。如果一张图像的对比度太低,那么它的细节就会很模糊,无法清晰显示。下面我们来介绍Python代码如何实现图像的对比度调整。

首先,我们需要导入图像处理库Pillow。

from PIL import Image

然后,我们需要定义一个函数来实现对比度调整。这个函数需要传入两个参数:image和contrast。

def adjust_contrast(image, contrast):

其中,image表示需要调整对比度的图像,contrast表示需要调整的对比度值。如果需要增加对比度,contrast的值应该大于1;相反,如果需要降低对比度,contrast的值应该小于1。

接下来,我们需要从传入的图像中获取像素数据,并遍历每个像素。

    pixels = image.load()
    width, height = image.size

    for x in range(width):
        for y in range(height):
            r, g, b = pixels[x, y]

然后,我们需要分别计算出每个像素的新R、G、B值。这个过程需要用到公式:new_value = (value - 128) * contrast + 128。

            # 计算新的R、G、B值
            r_new = int((r - 128) * contrast + 128)
            g_new = int((g - 128) * contrast + 128)
            b_new = int((b - 128) * contrast + 128)

最后,我们用新的像素值替换原来的像素值,并生成一张新的图像。

            # 用新的像素值替换原来的像素值
            pixels[x, y] = (r_new, g_new, b_new)

    # 生成新的图像
    new_image = Image.new("RGB", image.size)
    new_image.putdata(list(pixels))
    return new_image

完整的代码如下:

from PIL import Image

def adjust_contrast(image, contrast):
    # 获取像素数据
    pixels = image.load()
    width, height = image.size

    for x in range(width):
        for y in range(height):
            r, g, b = pixels[x, y]

            # 计算新的R、G、B值
            r_new = int((r - 128) * contrast + 128)
            g_new = int((g - 128) * contrast + 128)
            b_new = int((b - 128) * contrast + 128)

            # 用新的像素值替换原来的像素值
            pixels[x, y] = (r_new, g_new, b_new)

    # 生成新的图像
    new_image = Image.new("RGB", image.size)
    new_image.putdata(list(pixels))
    return new_image

这样就完成了图像的亮度和对比度调整。通过调整亮度和对比度,我们可以让图像更加清晰、明亮。