Python如何改变图片亮度

M5NS1 数码 6

对于图片处理,改变图片亮度是其中非常常见的操作之一。而Python作为一种高级语言,也提供了很多方便的库来实现这个功能。在本文中,我们将从不同的方面详细介绍如何使用Python来改变图片亮度。

OpenCV是一个广泛使用的计算机视觉和机器学习库,在Python中使用也非常方便。我们可以利用OpenCV来改变图片亮度,以下是示例代码:

import cv2

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

# 增加亮度,增加50
M = np.ones(img.shape, dtype="uint8") * 50
added = cv2.add(img, M)

# 减少亮度,减少50
M = np.ones(img.shape, dtype="uint8") * 50
sub = cv2.subtract(img, M)

cv2.imshow('original', img)
cv2.imshow('added', added)
cv2.imshow('sub', sub)
cv2.waitKey()
cv2.destroyAllWindows()

以上代码中,我们首先使用cv2.imread函数读取目标图片,然后使用cv2.add和cv2.subtract函数来添加或减少亮度。其中,add函数将两个图像相加,而subtract函数将两个图像相减。

ImageEnhance库是Python中的一个专门用来处理图像增强的库。我们可以使用该库中的Brightness方法实现改变图片亮度。以下是示例代码:

from PIL import Image, ImageEnhance

def change_brightness(im, factor):
    enhancer = ImageEnhance.Brightness(im)
    return enhancer.enhance(factor)

im = Image.open('test.jpg')
im.show()

# 增加亮度,增加50%
im_new = change_brightness(im, 1.5)
im_new.show()

# 减少亮度,减少50%
im_new = change_brightness(im, 0.5)
im_new.show()

以上代码中,我们首先使用PIL库中的Image.open函数读取目标图片,然后定义了一个change_brightness函数来实现改变图片亮度。在函数中,我们使用ImageEnhance.Brightness类创建一个增强器,然后将其传入enhancer.enhance方法中,再通过传入的factor参数来控制亮度的变化。

numpy库是Python中一个非常实用的数学计算库,其中也包含了一些图像处理的函数。可以通过改变图片的像素点的数值来改变图片的亮度。以下是示例代码:

import cv2 
import numpy as np 

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

# 增加亮度,增加50
brightness = 50
res = np.uint8(np.clip((1.0 + brightness/100.0) * img, 0, 255))

# 减少亮度,减少50
brightness = -50
res = np.uint8(np.clip((1.0 + brightness/100.0) * img, 0, 255))

cv2.imshow('original', img)
cv2.imshow('result', res)
cv2.waitKey()
cv2.destroyAllWindows()

以上代码中,我们首先使用cv2.imread函数读取目标图片,然后通过np.clip函数来限制像素值在0-255之间,最后通过改变亮度的参数来实现改变像素点的数值,从而达到改变图片亮度的目的。

本文从三个不同的方面介绍了如何使用Python来改变图片亮度,具体包括使用OpenCV库、ImageEnhance库以及numpy库。不同的库有不同的特点和适用场景,读者可以根据自己的需求来选择合适的库和方法。希望本文能够对大家有所帮助。

  • 暂无回复内容