PIL

作者: RJ阿杰 | 来源:发表于2018-12-01 20:19 被阅读0次

    英文手冊
    中文手冊

    基本概念

    Python Imaging Library可以處理光柵圖像,也就是矩形的像素。

    • 頻段
      一個圖片允許包含一個或多個頻段。 Python Imaging Library允許你在單個圖像中存儲多個頻段。包括原圖像的尺寸和大小。舉個例子,一個PNG圖片可能包含'R','G','B',和'A'頻段來表示紅,綠,藍和alpha透明值。有許多對應頻段的操作。例如:直方圖。它常常用來處理不同像素的每個頻段的值。

    要想獲得圖像的頻段的數量和名稱,使用getbands()方法。

    • 模式
      圖像的 mode 定義了這個圖像每一個像素點的大小. 目前版本支持以下標準模式:
    1 1-bit的像素點 黑白,一個1bit的像素點還是佔用一個byte
    L 8-bit的像素點 黑白
    P 8-bit的像素點 使用調色板來映射其他模式
    RGB 3x8-bit的像素點 真彩
    RGBA 4x8-bit的像素點 帶有透明標記的真彩
    CMYK 4x8-bit的像素點 分色
    YCbCr 3x8-bit的像素點 圖像視頻格式,值得注意的是這個屬於JPEG,而並不是ITU-RBT.2020, standard
    LAB 3x8-bit的像素點 Lab色彩空間
    HSV 3x8-bit的像素點 Hue,Saturation,Value色彩空間
    I 32-bit的像素點 有符號整數像素
    F 32-bit的像素點 浮點像素

    PIL 同樣支持一些不常用的模式, 包括LA (L with alpha), RGBX (true color with padding) and RGBa (true color with premultiplied alpha). 然而, PIL 不支持用戶自定義模式; 如果你需要使用上述沒有提到的模式, 則需要使用圖像對象序列.
    你可以通過 mode 屬性獲取圖像的模式. 這是一個字符串類型的值.

    • 尺寸
      你可以通過size屬性讀取到圖像的大小。這是一個由兩個元素組成的元組,其中第一個元素代表長,第二個則代表寬,單位是像素。

    • 坐標系
      Python Imaging Library使用笛卡爾坐標系,使用(0,0)表示左上角。值得注意的是,坐標點表示的是一個像素的左上角,而表示像素的中央則是(0.5,0.5)。

    坐標系通常使用含有兩個元素的元組進行交互。表示矩形則使用以左上角的坐標打頭的包含四個元素的元組,例如,一個800x600像素可以表示為(0,0,800,600)。

    • 調色板
      (P)模式使用調色板來為每一個像素指定實際的顏色。

    • 摘要
      你可以通過info屬性來獲取圖片的摘要信息。這是一個字典對象。
      在讀取和寫入圖像文件的時候涉及到的信息取決於文件模式。大多讀取的時候會獲得info屬性,但是在保存的時候不會獲得。

    • 過濾
      當你需要對圖像進行幾何操作的時候,Python Imaging Library提供了一些不同的濾鏡。
      NEAREST
      從輸入圖像中選擇最近的像素。忽略所有其他輸入像素。
      BILINEAR
      對於調整大小,使用可能有助於輸出值的所有像素上的線性插值來計算輸出像素值。對於其他變換,使用輸入圖像中2x2環境的線性插值。
      BICUBIC
      對於調整大小,使用可能有助於輸出值的所有像素上的三次插值來計算輸出像素值。對於其他變換,使用輸入圖像中的4×4環境的三次插值。
      LANCZOS
      使用可能有助於輸出值的所有像素上的高質量Lanczos濾波器(截斷的sinc)計算輸出像素值。在當前版本的PIL中,此過濾器只能與調整大小和縮略圖方法一起使用。

    載入模塊

    from PIL import Image

    圖片讀寫

    matplotlib(圖片內聯 jupyter 方便)

    matplotlib.imshow()也可以直接讀取PIL.Image.Image物件,也可以讀取不同mode圖片陣列,imshow顯示灰階圖時,若顯示不正常matplotlib.pyplot.imshowcmap參數需設為'gray'
    matplotlib
    matplotlib.pyplot.imread
    matplotlib.pyplot.imshow

    PIL

    Image.open
    format這個屬性代表圖片文件的擴展名,如果圖片文件打開失敗,則其值為無。 size這個屬性代表圖片的大小,以像素為單位,使用包含兩個元素的元組來返回。info以字典形式返回示例的信息。 mode這個屬性代表圖片的band屬性,一般情況(黑白)下為“L”,當圖片是彩色的時候是“RGB”,如果圖片經過壓縮,則是“CMYK”。

    Image.getdata
    numpy.asarray(將PIL圖片轉array)
    Image.fromarray(將array轉PIL圖片)
    Image.save

    切片索引只有2通道,不符合彩色模式fromarray將會轉換成黑白 索引RGB通道捨,棄透明度通道,然後R、G通道設為zero 存檔

    PIL與matplotlib合用

    圖片裁剪

    Image.crop

    圖片黏貼

    Image.paste

    圖片縮放

    Image.thumbnail
    Image.resize

    分割與合併波段

    Python Imaging Library 同樣允許你操作多波段的圖片, 比如RGB圖片. split 方法會創建一個圖片集合, 每一個表示了這個圖片的一個波段. merge 方法需要傳入一個mode參數和一個圖片的元組, 然後融合這個圖像.
    Image.split
    Image.merge

    旋轉

    Image.rotate
    Image.transpose

    模式轉換

    Image.convert

    圖像效果

    濾鏡:ImageFilter


    效果增強:ImageEnhance

    指定幀

    Image.seek

    相关文章

      网友评论

          本文标题:PIL

          本文链接:https://www.haomeiwen.com/subject/gjofcqtx.html