Python圖像處理教程(Pillow)5基本圖像處理

基本圖像處理

Pillow簡介

Pillow 是一個用于圖像處理的 Python 庫。它提供了許多與GIMP或Photoshop等成像應用程序中類似的圖像處理功能,但它們是用Python代碼而不是用戶界面來調用的。這對于自動化圖像處理任務或在你自己的應用程序中添加成像功能是非常理想的。

Pillow是一個名為PIL的老式圖像庫的fork。這意味著它是基于PIL中的原始代碼,但隨著時間的推移,新的功能和錯誤修正已經被加入。

PIL本身自2009年以來就沒有更新過。Pillow的主要動機是PIL與Python 3不兼容,而且PIL與setuptools不兼容(意味著它不能用pip輕松安裝)。此外,PIL還有一些已知的錯誤沒有被修復。

Pillow已經成為PIL的事實上的替代品。Pillow使用PIL的命名空間。你不應該嘗試將PIL和Pillow安裝在同一個系統(tǒng)上。

安裝Pillow

python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow

Pillow的主要特點

  • 打開、保存并在許多不同的圖像格式之間轉換。
  • 從Python代碼中自動執(zhí)行各種圖像處理任務。
  • 從圖像中提取元數(shù)據(jù)、統(tǒng)計數(shù)據(jù)和其他信息。
  • 與系統(tǒng)功能集成 - 圖像查看器、屏幕抓取、打印。
  • 與各種UI系統(tǒng)集成 - Qt, Tk, Windows.
  • 有效地訪問像素數(shù)據(jù),以實現(xiàn)你自己的圖像處理。
  • 在不同的像素表示法之間進行轉換--顏色空間,顏色深度,基于調色板的圖像。
  • 與NumPy和其他Python庫交換數(shù)據(jù)。
  • 在圖像上繪圖。
  • 應用色彩管理。
  • 處理圖像序列。

創(chuàng)建和顯示圖像

  • 創(chuàng)建Mandelbrot Set的圖像
from PIL import Image

image = Image.effect_mandelbrot((520, 440), (-2, -1.1, 0.6, 1.1), 256)
image.show()

Image.effect_mandelbrot函數(shù)有3個參數(shù)。

  • size (520, 440)指定520x440像素的圖像。
  • extent (-2, -1.1, 0.6, 1.1)意味著圖像將在-2 < x < 0.6 和 -1.1 , y , 1.1區(qū)域顯示曼德布羅特集。這個區(qū)域涵蓋了分形的主要部分。
  • quality。這設置了算法創(chuàng)建圖像時的最大循環(huán)次數(shù)。對于像這樣的小圖像,256就可以了。

調用image.show()會使圖像在單獨的窗口中顯示。這主要是為了測試和調試的目的--它為你省去了將圖像保存到文件然后在查看器中打開圖像的麻煩。

保存圖像

from PIL import Image

image = Image.effect_mandelbrot((520, 440), (-2, -1.1, 0.6, 1.1), 256)
image.save('mandelbrot.png')

save方法使用提供的文件名保存圖像對象。文件類型是由擴展名控制的。例如,".png "創(chuàng)建PNG文件,或者".jpg "創(chuàng)建JPEG文件。

處理顏色

Pillow支持許多顏色空間,包括:

  • RGB
  • RGBA
  • Grey

將字符串轉換為顏色

你可以用字符串來表示顏色。有多種格式,例如。

  • '#FF0080'表示100%紅、0%綠、50%藍的RGB值。
  • 'rgb(100%, 0%, 50%)'也代表100%紅、0%綠、50%藍的RGB值。
  • 'magenta'代表100%紅、0%綠、100%藍的RGB值。

當你把字符串傳入需要顏色的Pillow函數(shù)時,它將被自動轉換為顏色。

Image.new創(chuàng)建圖像

from PIL import Image, ImageColor

image = Image.new('RGB', (400, 300), 'gold')
image.show()

new有3個參數(shù)。

  • mode - 字符串,決定圖像的顏色模型和深度。字符串RGB創(chuàng)建24-bit的RGB圖像。我們將在本書的后面介紹其他模式。
  • size - 以像素為單位的圖像大小的元組。
  • color - 圖像的顏色。

打開圖像

from PIL import Image

image = Image.open('boat.jpg')
image.show()

旋轉圖像

from PIL import Image

image = Image.open('boat.jpg')
rotated = image.rotate(180)
rotated.show()

rotated.save("rotated-boat.png")

rotate方法創(chuàng)建旋轉過的新圖像。旋轉需要1個參數(shù)和一些額外的可選參數(shù)。

  • angle - 旋轉的角度,單位是度。

注意:旋轉默認不會改變size,可能會導致部分圖片內容丟失。使用expand=True會擴展圖片size。transpose(Image.ROTATE_90)和im.rotate(90, expand=True)的效果實際是相同。

更多旋轉實例:pillow/rotate.py

命令行旋轉工具:tools/rotate.py

opencv的旋轉:cv/rotate.py

創(chuàng)建縮略圖

from PIL import Image

image = Image.open('boat.jpg')
image.thumbnail((200, 200))
image.show()

image.save("thumbnail-boat.png")

縮略圖需要1個參數(shù)。

  • size - 給出圖像的最大寬度和高度的元組。
    在這種情況下,原始圖像是600×400像素。thumbnail將圖像縮小到200×200像素--這是能滿足所需尺寸的最大圖像,但保持原來的寬度和高度比例。

圖像模式

在Pillow中,圖像模式描述了色彩空間和每個像素的比特數(shù)。它由字符串表示。

最常見的模式是

  • 'RGB' - 24位的RGB(每種顏色8位)。
  • 'RGBA' - 32位的RGB加阿爾法(每種顏色8位,阿爾法8位)。
  • 'L'--8位灰度。
  • ''1' - 兩級數(shù)據(jù)(每個像素是全黑或全白)。
  • 'P'--每個像素是一個8位的索引,進入一個調色板,映射到其他的顏色。

參考資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容