python中常用到圖像處理,處理時會需要import PIL庫。
本篇文章說明如何運用PIL庫。
1. bands(通道)
圖像的波段數、RGB圖像、灰度圖像。
這邊以RGB為例:
1 2 3 4 5 |
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。
1 |
img.mode |
- 1,1位像素,表示黑&白,但儲存時每個像素為8bit。
- L,8位像素,表示黑&白。
- P,8位像素,使用調色板映射到其他模式。
- RGB,3×8位像素,為真彩色。
- RGBA,4×8位像素,為帶透明通道的真彩色。
- CMYK,4×8位像素,四色分離色彩模式,為全彩。
- YCbCr,3×8位像素,為彩色影片格式。
- I,32位整數型像素。
- F,32位浮點數型像素。
3. size(尺寸)
獲取圖片長、寬像素。
1 |
img.size() |
4. coordinate system(座標系統)
PIL使用笛卡爾像素座標系統,(0,0)位於左上角。
這邊要提醒,座標表示像素的角(左上角),所以(0,0)處的像素中心實際上位於(0.5,0.5)處。
5. palette(調色盤)
在調色盤模式(P),適用一個顏色調色盤為每一個像素定義具體的色彩值。
6. info(資訊)
1 |
img.info() # 返回一dictionary值 |
7. filters(濾波器)
將多個輸入像素映射為另一個輸出像素的幾何操作。
PIL提供以下四種不同的採樣濾波器:
- NEAREST: 最近濾波。輸入圖像中選取最近的像素作為輸出像素。
- BILINEAR: 雙線性內插濾波。在輸入圖像的2×2矩陣上進行線性插值。
- BICUBIC: 雙立方濾波。在輸入圖像的4×4矩陣上進行立方插值。
- ANTIALIAS: 平滑濾波。對所有可以影響輸出像素的輸入像素進行高品質的重採樣濾波,以計算輸出像素值。
1 2 3 4 5 6 7 8 9 10 |
# 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) |
留言