Python如何改變圖片亮度

M5NS1 數碼 8

對於圖片處理,改變圖片亮度是其中非常常見的操作之一。而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庫。不同的庫有不同的特點和適用場景,讀者可以根據自己的需求來選擇合適的庫和方法。希望本文能夠對大家有所幫助。

回復

共1條回復 我來回復
  • 暫無回復內容