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庫。不同的庫有不同的特點和適用場景,讀者可以根據自己的需求來選擇合適的庫和方法。希望本文能夠對大家有所幫助。