ga('set', 'anonymizeIp', 1);
Categories: CodingPython

[python] PIL基本介紹

Share

python中常用到圖像處理,處理時會需要import PIL庫。

本篇文章說明如何運用PIL庫。

1. bands(通道)

圖像的波段數、RGB圖像、灰度圖像。

這邊以RGB為例:

from PIL import Image
img = Image.open('*.jpg')      # 打開RGB圖像
img_bands = img.getbands()     # 取得RGB三個波段
len(img_bands)
print img_bands[0,1,2]

2. mode(模式)

定義圖像類型以及像素寬,總計有九種mode。

img.mode
  1. 1,1位像素,表示黑&白,但儲存時每個像素為8bit。
  2. L,8位像素,表示黑&白。
  3. P,8位像素,使用調色板映射到其他模式。
  4. RGB,3×8位像素,為真彩色。
  5. RGBA,4×8位像素,為帶透明通道的真彩色。
  6. CMYK,4×8位像素,四色分離色彩模式,為全彩。
  7. YCbCr,3×8位像素,為彩色影片格式。
  8. I,32位整數型像素。
  9. F,32位浮點數型像素。

3. size(尺寸)

獲取圖片長、寬像素。

img.size()

4. coordinate system(座標系統)

PIL使用笛卡爾像素座標系統,(0,0)位於左上角。

這邊要提醒,座標表示像素的角(左上角),所以(0,0)處的像素中心實際上位於(0.5,0.5)處。

5. palette(調色盤)

在調色盤模式(P),適用一個顏色調色盤為每一個像素定義具體的色彩值。

6. info(資訊)

img.info()  # 返回一dictionary值

7. filters(濾波器)

將多個輸入像素映射為另一個輸出像素的幾何操作。

PIL提供以下四種不同的採樣濾波器:

  1. NEAREST: 最近濾波。輸入圖像中選取最近的像素作為輸出像素。
  2. BILINEAR: 雙線性內插濾波。在輸入圖像的2×2矩陣上進行線性插值。
  3. BICUBIC: 雙立方濾波。在輸入圖像的4×4矩陣上進行立方插值。
  4. ANTIALIAS: 平滑濾波。對所有可以影響輸出像素的輸入像素進行高品質的重採樣濾波,以計算輸出像素值。
# img.resize()和img.thumbnail()用到了滤波器
# 方法一:resize(size,filter = None)
from PIL import Image 
img = Image.open('*.jpg')
img_resize = img.resize((256,256)) #default 情况下是NEAREST插值
img_resize0 = img.resize((256,256), Image.BILINEAR)
img_resize1 = img.resize((256,256), Image.BICUBIC)
img_resize2 = img.resize((256,256), Image.ANTIALIAS)

# 方法二:thumbnail(size,filter = None)
Jys

Published by
Jys

Recent Posts

[python] Flask Create RESTful API

This article gi... Read More

3 年 前發表

[Javascript] 新增/刪除JSON中key值

在web訊息交換常會需要對JS... Read More

3 年 前發表

[JAVA] SQL Server Connection

本文介紹JAVA連線SQL s... Read More

3 年 前發表