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调整图像亮度和对比度的几种方法。您可以使用这些方法中的任何一种或结合使用多种方法,以根据您的需求调整图像的亮度和对比度。