如何使用Python调整图片的亮度和对比度

1. Python调整图片亮度

在Python中,使用OpenCV库可以对图像进行亮度的增加和减少。OpenCV是一个流行的计算机视觉库,可以用于处理各种图像和视频任务。使用OpenCV库的Python接口可以让您轻松处理和修改图像。

下面是一个简单的Python脚本,可以调整图像的亮度。

import cv2

# 加载图像

img = cv2.imread('input.jpg')

# 设置亮度增加值

brightness = 60

# 调整亮度

img_brightness = cv2.add(img, brightness)

# 显示调整后的图像

cv2.imshow('Brightness Adjust', img_brightness)

cv2.waitKey(0)

cv2.destroyAllWindows()

在本例中,我们首先使用cv2.imread函数加载所需的图像。然后,我们使用cv2.add函数和亮度增加值调整图像的亮度。最后,我们使用cv2.imshow函数显示调整后的图像。

1.1 图像亮度的调整原理

图像亮度调整实际上是通过调整图像每个像素的亮度值来完成的。在上面的代码中,我们使用cv2.add函数进行亮度的增加。这个函数的原理是将亮度增加值加到图像中的每个像素,然后在输出图像中返回新的像素值。因此,如果更改亮度的值为负数,图像的亮度将减少。

下面是一个简单的Python脚本,可以调整图像的亮度。

import cv2

import numpy as np

# 加载图像

img = cv2.imread('input.jpg')

# 创建矩阵

M = np.ones(img.shape, dtype="uint8") * 75

# 增加亮度

img_brightness = cv2.add(img, M)

# 显示调整后的图像

cv2.imshow('Brightness Adjust', img_brightness)

cv2.waitKey(0)

cv2.destroyAllWindows()

在本例中,我们首先使用cv2.imread函数加载所需的图像。然后,我们创建一个矩阵,其中每个元素都是75。接下来,我们使用cv2.add函数将矩阵添加到图像的每个像素中。最后,我们使用cv2.imshow函数显示调整后的图像。

这种方法可以在保留图像的细节的同时提高整个图像的亮度。但是,如果您希望仅提高图像的某些区域的亮度,则需要使用不同的方法。

2. Python调整图像的对比度

调整图像的对比度可以让您优化图片的色彩和细节,使图像更加生动和清晰。在Python中,使用OpenCV库可以对图像的对比度进行调整。

下面是一个简单的Python脚本,可以调整图像的对比度。

import cv2

# 加载图像

img = cv2.imread('input.jpg')

# 设置对比度增加值

contrast = 1.5

# 调整对比度

img_contrast = cv2.multiply(img, contrast)

# 显示调整后的图像

cv2.imshow('Contrast Adjust', img_contrast)

cv2.waitKey(0)

cv2.destroyAllWindows()

上述代码中,我们使用cv2.imread函数加载所需的图像。然后,我们使用cv2.multiply函数和对比度增加值调整图像的对比度。最后,我们使用cv2.imshow函数显示调整后的图像。

2.1 图像对比度调整原理

图像对比度的调整也是通过修改图像的像素值来实现的。在上面的代码中,我们使用cv2.multiply函数执行图像对比度的调整。这个函数的原理是将对比度增加值乘以图像中的每个像素,然后在输出图像中返回新的像素值。因此,如果将对比度的值减少,图像的对比度将会降低。

下面是一个简单的Python脚本,可以调整图像的对比度。

import cv2

import numpy as np

# 加载图像

img = cv2.imread('input.jpg')

# 定义白色的像素点

white = [255, 255, 255]

# 定义黑色的像素点

black = [0, 0, 0]

# 创建LUT

LUT = np.zeros((1,256,3), dtype="uint8")

# 增加对比度

LUT[0][0:90] = black

LUT[0][91:210] = np.linspace(0,255,120)

LUT[0][211:256] = white

# 应用LUT

img_contrast = cv2.LUT(img, LUT)

# 显示调整后的图像

cv2.imshow('Contrast Adjust', img_contrast)

cv2.waitKey(0)

cv2.destroyAllWindows()

上述代码中,我们使用cv2.imread函数加载所需的图像。然后,我们定义白色和黑色的像素点,并使用np.zeros函数创建一个3通道的零值矩阵。接下来,我们将每个值替换为相应的颜色,并使用np.linspace函数生成介于0和255之间的120个数字的线性序列。最后,我们使用cv2.LUT函数应用LUT到输入图像并生成调整后的图像。

这种方法可以在保留图像的细节的同时提高整个图像的对比度。但是,如果您希望仅提高图像的某些区域的对比度,则需要使用不同的方法。

3. 结论

以上是使用Python调整图像亮度和对比度的几种方法。您可以使用这些方法中的任何一种或结合使用多种方法,以根据您的需求调整图像的亮度和对比度。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签