pillow 學(xué)習(xí)筆記(11.12.2017)

本文基于

PIL(Python Image Library)是Python進(jìn)行圖像處理最常用也是最基礎(chǔ)的庫(kù)之一。基本上已經(jīng)算是半標(biāo)準(zhǔn)庫(kù)了。但是原版PIL的開發(fā)者已經(jīng)基本上放棄更新這個(gè)庫(kù)了。致使這個(gè)庫(kù)有很多issues亟待解決,同時(shí)也無(wú)法支持日益流行的python3。所以,現(xiàn)在這個(gè)庫(kù)已經(jīng)基本被它的一個(gè)分支pillow取代。

安裝

對(duì)于Linux和Windows來(lái)說(shuō),最方便的安裝方法就是pip了。

pip install pillow

要注意的是,pillow和PIL不可以同時(shí)存在。如果要使用Pillow庫(kù)必須要先卸載原來(lái)的PIL庫(kù)。

安裝好之后,打開 Python 解釋器,輸入 from PIL import Image 來(lái)測(cè)試是否安裝成功。

Image類

Image類的讀取、顯示與保存

像openCV中的Mat一樣。研究pillow就必須先研究其圖像類Image。

from PIL import Image
im = Image.open("source.png")
im.show()

經(jīng)典三部曲。引庫(kù),讀取,顯示。經(jīng)測(cè)試,直接im-show("source.png")也可以直接顯示。還可以用im.save('somewhere.png')保存。注意可以利用改變保存文件的后綴來(lái)實(shí)現(xiàn)格式轉(zhuǎn)換。比如

 Image.open('in.jpg').save('out.png')

另外也可以從零創(chuàng)造一個(gè)新的空白圖像。

im = Image.new(mode, size, color=0)

mode是RGB還是CMYK之類的選擇。size`是一個(gè)二元元組。color``是背景色顏色,默認(rèn)是黑色,也是用一個(gè)元組給出。

Image類的常用屬性

#尺寸
w, h = im.size
#格式
print(im.format)
#或者
print(type(im))
#色彩模式
print(im.mode)

Image 類的 thumbnail() 方法

Image 類的 thumbnail() 方法可以制作縮略圖。用法是在參數(shù)中輸入一個(gè)二元列表或者元組,如im.thumbnail([200, 400])im.thumbnail((200, 400))都可以。這里要注意,這一個(gè)過(guò)程型的方法,作用的對(duì)象是im本身。這個(gè)函數(shù)沒(méi)有返回值。
small_im = im.thumbnail([200, 400])是錯(cuò)誤的。

Image類的crop(box)方法

crop()方法用于裁剪圖像的一部分。它的參數(shù)是一個(gè)box元組,即(x, y, x+w, y+h), (x,y)是裁剪框左上角的坐標(biāo), (x+w, y+h)是右下角的坐標(biāo)。如下圖所示


坐標(biāo)示意圖
x = 100
y = 100
w = 200
h = 200
region = im.crop((x, y, x+w, y+h))
region.show()
region.save('region.jpg')

調(diào)用方法的對(duì)象是輸入圖像,方法的返回值即輸出圖像。

Image類的paste()方法

paste()是粘貼類。輸入?yún)?shù)有兩個(gè)。一個(gè)是待貼入的圖像,另一個(gè)也是一個(gè)box元組標(biāo)記位置。box元組同上一部分。而帶貼入的圖像是一個(gè)Image類對(duì)象。調(diào)用這個(gè)paste()的對(duì)象就是被貼圖的基底圖像。這個(gè)方法也是一個(gè)沒(méi)有返回值的過(guò)程方法。

im.paste(region, (x+50, y+50, x+50+w, y+50+h))

Image類的transpose()方法

顧名思義,transpose()方法是用來(lái)實(shí)現(xiàn)圖形變換的??梢栽贗mage對(duì)象的后面以.transpose().transpose().transpose()的形式進(jìn)行連續(xù)變換。輸入?yún)?shù)是變換方法和參數(shù),選取如下之一:

Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, 
Image.ROTATE_90, 
Image.ROTATE_180, 
Image.ROTATE_270 
Image.TRANSPOSE.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • Image讀出來(lái)的是PIL的類型,而skimage.io讀出來(lái)的數(shù)據(jù)是numpy格式的 輸出可以看出Img讀圖片的...
    jiandanjinxin閱讀 97,580評(píng)論 2 52
  • 1、鑒于安裝過(guò)程中各種失敗的問(wèn)題,所以記錄下正確的安裝姿勢(shì)(安裝環(huán)境是在centos6.5) 報(bào)錯(cuò)問(wèn)題:could...
    吃喝玩樂(lè)小喬豆閱讀 6,024評(píng)論 0 1
  • 【周檢視】 20170828~20170903 三個(gè)目標(biāo)完成情況 1,目標(biāo):運(yùn)動(dòng)每周超過(guò)200分鐘 實(shí)際:208...
    寒無(wú)之閱讀 166評(píng)論 0 0
  • 簡(jiǎn)介 Chisel 是facebook公司開源的一款lldb調(diào)試增強(qiáng)插件,它有一些比較好用的命令,可以幫助你梳理項(xiàng)...
    Lawrenceo0閱讀 1,668評(píng)論 1 3

友情鏈接更多精彩內(nèi)容