1. 程式人生 > 其它 >Python 學習筆記之—— PIL 庫

Python 學習筆記之—— PIL 庫

PIL,全稱 Python Imaging Library,是 Python 平臺一個功能非常強大而且簡單易用的影象處理庫。但是,由於 PIL 僅支援到Python 2.7,加上年久失修,於是一群志願者在 PIL 的基礎上建立了相容 Python 3 的版本,名字叫 Pillow ,我們可以通過安裝 Pillow 來使用 PIL。

1. pip 安裝 pillow

在 Ubuntu 下通過一個簡單的命令`sudo pip3 install pillow`即可成功安裝庫。

2. 開啟、儲存、顯示圖片

from PIL import Image

image = Image.open('2092.jpg')
image.show()
image.save('1.jpg')
print(image.mode, image.size, image.format)
# RGB (481, 321) JPEG
  • mode 屬性為圖片的模式,RGB 代表彩色影象,L 代表光照影象也即灰度影象等
  • size 屬性為圖片的大小(寬度,長度)
  • format 屬性為圖片的格式,如常見的 PNG、JPEG 等

3. 轉換圖片模式

image.show()
grey_image = image.convert('L')
grey_image.show()

  • 任何支援的圖片模式都可以直接轉為彩色模式或者灰度模式,但是,若是想轉化為其他模式,則需要藉助一箇中間模式(通常是彩色)來進行過轉

4. 通道分離合並

r, g, b = image.split()
im = Image.merge('RGB', (b, g, r))
  • 彩色影象可以分離出 R、G、B 通道,但若是灰度影象,則返回灰度影象本身。然後,可以將 R、G、B 通道按照一定的順序再合併成彩色影象。

5. 圖片裁剪、旋轉和改變大小

box = (100, 100, 300, 300)
region = image.crop(box)
region = region.transpose(Image.ROTATE_180)
image.paste(region, box)
image.show()
  • 通過定義一個 4 元組,依次為左上角 X 座標、Y 座標,右下角 X 座標、Y 座標,可以対原圖片的某一區域進行裁剪,然後進行一定處理後可以在原位置貼上回去。
im = image.resize((300, 300))
im = image.rotate(45)  # 逆時針旋轉 45 度
im = image.transpose(Image.FLIP_LEFT_RIGHT) # 左右翻轉
im = im.transpose(Image.FLIP_TOP_BOTTOM)# 上下翻轉

6. 畫素值操作

out = image.point(lambda i: i * 1.2) # 對每個畫素值乘以 1.2

source = image.split()
out = source[0].point(lambda i: i > 128 and 255) # 對 R 通道進行二值化

  • i > 128 and 255,當 i <= 128 時,返回 False 也即 0,;反之返回 255 。

7. 和 Numpy 陣列之間的轉化

array = np.array(image)
print(array.shape) #(321, 481, 3)
out = Image.fromarray(array)