Python如何改变图片亮度
对于图片处理,改变图片亮度是其中非常常见的操作之一。而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库。不同的库有不同的特点和适用场景,读者可以根据自己的需求来选择合适的库和方法。希望本文能够对大家有所帮助。