Python的圖像處理庫Pillow安裝與使用教程
前言
在Python中,Pillow庫是一個非常強大的圖像處理庫。它提供了廣泛的圖像處理功能,讓我們可以輕松地操作圖像,實現(xiàn)圖像的轉(zhuǎn)換、裁剪、縮放、旋轉(zhuǎn)等操作。此外,Pillow還支持多種圖像格式的讀取和保存,包括JPEG、PNG、BMP、GIF等。
安裝Pillow
首先,我們需要安裝Pillow庫。在終端或命令行中輸入以下命令來安裝Pillow:
pip install pillow
如果您的環(huán)境中已經(jīng)安裝了PIL庫,那么可以通過以下命令來升級到最新版本的Pillow:
pip install pillow --upgrade
Pillow庫的主要模塊和類
Pillow庫的主要模塊包括Image、ImageColor、ImageDraw、ImageFont、ImageFilter等。每個模塊都提供了相應(yīng)的類和方法來處理圖像。
- Image模塊提供了打開、操作和保存圖像的方法。它包含了所有需要的圖像操作函數(shù)。
- ImageColor模塊提供了用于操作RGB顏色空間的方法。
- ImageDraw模塊提供了用于在圖像上繪制各種形狀和文本的方法。
- ImageFont模塊提供了用于設(shè)置字體和字體大小的方法。
- ImageFilter模塊提供了一些用于對圖像進(jìn)行濾波處理的方法。
下面我們將通過代碼示例來演示如何使用Pillow庫進(jìn)行圖像處理。
打開和顯示圖像
首先,我們可以使用Image.open()
方法打開一張圖像,并使用Image.show()
方法來顯示圖像。
from PIL import Image # 打開圖像 img = Image.open('example.jpg') # 顯示圖像 img.show()
在這個例子中,我們使用Image.open()
方法打開名為example.jpg
的圖像文件,并將其保存到img
變量中。然后,我們使用img.show()
方法來顯示這個圖像。
圖像的轉(zhuǎn)換和調(diào)整
Pillow庫提供了多種用于轉(zhuǎn)換和調(diào)整圖像的方法。下面是一些常用的方法:
Image.resize(size)
方法用于調(diào)整圖像的大小。Image.rotate(angle, expand=True)
方法用于旋轉(zhuǎn)圖像。Image.transpose(method)
方法用于翻轉(zhuǎn)或旋轉(zhuǎn)圖像。Image.convert(mode='RGB')
方法用于將圖像轉(zhuǎn)換為RGB模式。Image.adjust(brightness=0, contrast=0, saturation=0, hue=0)
方法用于調(diào)整圖像的亮度、對比度、飽和度和色調(diào)。
from PIL import Image, ImageOps, ImageFilter, ImageEnhance # 打開圖像 img = Image.open('example.jpg') # 調(diào)整圖像大小 img_resized = img.resize((300, 300)) # 旋轉(zhuǎn)圖像 img_rotated = img.rotate(45) # 翻轉(zhuǎn)圖像 img_flipped = img.transpose(Image.FLIP_LEFT_RIGHT) # 調(diào)整亮度對比度和飽和度 enhancer = ImageEnhance.Brightness(img) img_brightened = enhancer.enhance(1.5) # 提高亮度50% enhancer = ImageEnhance.Contrast(img) img_contrasted = enhancer.enhance(1.5) # 提高對比度50% enhancer = ImageEnhance.Color(img) img_colored = enhancer.enhance(1.5) # 提高飽和度50% # 顯示結(jié)果 img_resized.show() img_rotated.show() img_flipped.show() img_brightened.show() img_contrasted.show() img_colored.show()
在這個例子中,我們首先使用Image.open()
方法打開名為example.jpg
的圖像文件,并將其保存到img
變量中。然后,我們使用Image.resize()
方法調(diào)整圖像的大小,使用Image.rotate()
方法旋轉(zhuǎn)圖像,使用Image.transpose()
方法翻轉(zhuǎn)或旋轉(zhuǎn)圖像,使用ImageEnhance
模塊的Brightness()
、Contrast()
和Color()
方法分別調(diào)整圖像的亮度、對比度和飽和度。最后,我們使用img_xxx.show()
方法來顯示每個處理后的圖像。
補充:Pillow庫還提供哪些高級圖像處理功能?
濾鏡效果: 可以使用Pillow庫中的ImageFilter模塊來應(yīng)用各種濾鏡效果。例如,可以使用模糊濾鏡(Blur)來讓圖像看起來更加柔和,使用增強邊緣濾鏡(Enhance)來增強圖像的邊緣。
示例代碼:
from PIL import Image, ImageFilter # 讀取圖像文件 image = Image.open("image.jpg") # 應(yīng)用模糊濾鏡 blurred_image = image.filter(ImageFilter.BLUR) # 應(yīng)用增強邊緣濾鏡 edge_enhanced_image = image.filter(ImageFilter.EDGE_ENHANCE) # 顯示濾鏡效果后的圖像 blurred_image.show() edge_enhanced_image.show()
圖像合并: 使用Image.blend()
函數(shù)可以將兩個圖像進(jìn)行混合。該函數(shù)需要傳遞兩個圖像以及一個混合系數(shù)作為參數(shù)。
示例代碼:
from PIL import Image # 讀取第一個圖像文件 image1 = Image.open("image1.jpg") # 讀取第二個圖像文件 image2 = Image.open("image2.jpg") # 設(shè)置混合系數(shù)為0.5,即兩個圖像的混合比例為50% blended_image = Image.blend(image1, image2, 0.5) # 顯示混合后的圖像 blended_image.show()
顏色調(diào)整: 使用Pillow庫中的ImageEnhance模塊可以對圖像的顏色進(jìn)行調(diào)整。例如,可以使用亮度調(diào)整(Brightness)函數(shù)來增加或降低圖像的亮度,使用對比度調(diào)整(Contrast)函數(shù)來增加或降低圖像的對比度。
示例代碼:
from PIL import ImageEnhance # 讀取圖像文件 image = Image.open("image.jpg") # 創(chuàng)建亮度調(diào)整器 brightness_enhancer = ImageEnhance.Brightness(image) # 增加圖像亮度 brightened_image = brightness_enhancer.enhance(1.5) # 1.5為增加的倍數(shù) # 創(chuàng)建對比度調(diào)整器 contrast_enhancer = ImageEnhance.Contrast(image) # 增加圖像對比度 contrasted_image = contrast_enhancer.enhance(1.2) # 1.2為增加的倍數(shù) # 顯示調(diào)整后的圖像 brightened_image.show() contrasted_image.show()
這些功能可以幫助你在圖像處理中實現(xiàn)濾鏡效果、圖像合并以及顏色調(diào)整。根據(jù)需要選擇相應(yīng)的函數(shù)并調(diào)整參數(shù)。
總結(jié)
到此這篇關(guān)于Python圖像處理庫Pillow安裝與使用的文章就介紹到這了,更多相關(guān)Python圖像處理庫Pillow內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?RawString與open文件的newline換行符遇坑解決
這篇文章主要為大家介紹了Python?RawString與open文件的newline換行符遇坑解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10淺析python打包工具distutils、setuptools
python包在開發(fā)中十分常見,一般的使用套路是所有的功能做一個python模塊包,打包模塊,然后發(fā)布,安裝使用。這篇文章給大家介紹了python打包工具distutils、setuptools的相關(guān)知識,感興趣的朋友一起看看吧2018-04-04Django的ListView超詳細(xì)用法(含分頁paginate)
這篇文章主要介紹了Django的ListView超詳細(xì)用法(含分頁paginate),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Python的面向?qū)ο缶幊谭绞綄W(xué)習(xí)筆記
Python深度具備面向?qū)ο缶幊陶Z言所應(yīng)有的特性,這里我們以類和方法為主,來整理一下Python的面向?qū)ο缶幊谭绞綄W(xué)習(xí)筆記:2016-07-07簡單掌握Python中g(shù)lob模塊查找文件路徑的用法
glob模塊遵循Unix的shell規(guī)則來匹配文件名進(jìn)行文件查找,下面我們結(jié)合匹配相關(guān)的字符區(qū)間與通配符知識,來簡單掌握Python中g(shù)lob模塊查找文件路徑的用法2016-07-07Python的ORM框架中SQLAlchemy庫的查詢操作的教程
這篇文章主要介紹了Python的ORM框架中SQLAlchemy庫的查詢操作的教程,SQLAlchemy用來操作數(shù)據(jù)庫十分方便,需要的朋友可以參考下2015-04-04