PILLOW中圖像mode


在本地找了jpg的圖,convert為不同mode,將不同的圖截取做了個腦圖,有個直觀的感覺吧。

把不同mode的圖通過np.array()轉化為array, 打印出array的shape, 和array[0, 0]的值, 便於理解不同mode的通道和像素值的存儲。

  1 部分結果見下:

  

  2 部分代碼和結果:

  

復制代碼
# 將不同模式的圖片打印出shape 和 [0, 0]像素點的值
from PIL import Image
import matplotlib.pyplot as plt
image = Image.open('images/tower.jpg') # 本地一個文件
mode_list = ['1', 'L', 'I', 'F', 'P', 'RGB', 'RGBA', 'CMYK', 'YCbCr' ]
for mode in mode_list:
    img = image.convert(mode)
    img_data = np.array(img)
    print('img_{:>1}.shape: {}' .format(mode, img_data.shape))
    print('img_{:>}_data[0, 0]: {}'.format(mode, img_data[0, 0]))
    print('---')
復制代碼
# 以下為output
img_1.shape: (1276, 1920)
img_1_data[0, 0]: False
---
img_L.shape: (1276, 1920)
img_L_data[0, 0]: 88
---
img_I.shape: (1276, 1920)
img_I_data[0, 0]: 88
---
img_F.shape: (1276, 1920)
img_F_data[0, 0]: 88.94599914550781
---
img_P.shape: (1276, 1920)
img_P_data[0, 0]: 131
---
img_RGB.shape: (1276, 1920, 3)
img_RGB_data[0, 0]: [ 51  97 147]
---
img_RGBA.shape: (1276, 1920, 4)
img_RGBA_data[0, 0]: [ 51  97 147 255]
---
img_CMYK.shape: (1276, 1920, 4)
img_CMYK_data[0, 0]: [204 158 108   0]
---
img_YCbCr.shape: (1276, 1920, 3)
img_YCbCr_data[0, 0]: [ 88 160 100]
---
  1. RGB 為真色彩模式, 可組合為 256 x 256 x256 種, 打印需要更改為 CMYK模式, 需要注意數值溢出的問題。
  2. HSB 模式(本篇沒有涉及),建立基於人類感覺顏色的方式,將顏色分為色相(Hue),飽和度(Saturation),明亮度(Brightness),這里不詳細展開。
  3. CMYK模式,應用在印刷領域,4個字母意思是青、洋紅、黃、黑,因為不能保證純度,所以需要黑。
  4. 位圖模式,見1, 顏色由黑和白表示(True, False)。
  5. 灰度模式,只有灰度, 所有顏色轉化為灰度值,見L,I,F。
  6. 雙色調模式(未有涉及),節約成本將可使用雙色調。
  7. Lab模式(未涉及,ps內置),由3通道組成(亮度,a,b)組成,作為RGB到CMYK的過渡。
  8. 多通道模式,刪除RGB,CMYK,Lab中某一個通道后,會轉變為多通道,多通道用於處理特殊打印,它的每個通道都為256級灰度通道。
  9. 索引顏色模式,用在多媒體和網頁,通過顏色表查取,沒有則就近取,僅支持單通道,(8位/像素)。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM