Python圖像處理庫----Pillow(十五)

一具伍、 安裝

參考文檔:https://pillow.readthedocs.io/en/latest/installation.html

Pillow的安裝比較的簡單演闭,直接pip安裝即可:

pip install Pillow

但是要注意的一點是焚刚,PillowPIL不能共存在同一個環(huán)境中,所以如果安裝的有PIL的話旦袋,那么安裝Pillow之前應(yīng)該刪除PIL

由于是繼承自PIL的分支,所以Pillow的導(dǎo)入是這樣的:

import PIL 
# 或者
from PIL import Image

注意:圖像處理庫PIL(Python Imaging Library )支持python2,不支持python3初茶。

二、使用手冊

1浊闪、Image類的使用

Image是Pillow中最為重要的類恼布,實現(xiàn)了Pillow中大部分的功能。要創(chuàng)建這個類的實例主要有三個方式:

  1. 從文件加載圖像
  2. 處理其他圖像獲得
  3. 創(chuàng)建一個新的圖像
(1) 讀取圖像

一般來說搁宾,我們都是都過從文件加載圖像來實例化這個類折汞,如下所示:

from PIL import Image
picture = Image.open('happy.png')

如果沒有指定圖片格式的話,那么Pillow會自動識別文件內(nèi)容為文件格式盖腿。

(2)新建圖像

Pillow新建空白圖像使用new()方法爽待, 第一個參數(shù)是mode即顏色空間模式损同,第二個參數(shù)指定了圖像的分辨率(寬x高),第三個參數(shù)是顏色鸟款。

  • 可以直接填入常用顏色的名稱膏燃。如'red'。
  • 也可以填入十六進制表示的顏色何什,如#FF0000表示紅色组哩。
  • 還能傳入元組,比如(255, 0, 0, 255)或者(255富俄, 0禁炒, 0)表示紅色。
picture = Image.new('RGB', (200, 100), 'red')
(3)保存圖像

保存圖片的話需要使用save()方法:

picture.save('happy.png')

保存的時候霍比,如果沒有指定圖片格式的話幕袱,那么Pillow會根據(jù)輸入的后綴名決定保存的文件格式。

2悠瞬、圖像的坐標(biāo)表示

在Pillow中们豌,用的是圖像的左上角為坐標(biāo)的原點(0,0)浅妆,所以這意味著望迎,x軸的數(shù)值是從左到右增長的,y軸的數(shù)值是從上到下增長的凌外。

我們處理圖像時辩尊,常常需要去表示一個矩形的圖像區(qū)域。Pillow中很多方法都需要傳入一個表示矩形區(qū)域的元組參數(shù)康辑。

這個元組參數(shù)包含四個值摄欲,分別代表矩形四條邊的距離X軸或者Y軸的距離。順序是(左疮薇,頂胸墙,右,底)按咒。其實就相當(dāng)于迟隅,矩形的左上頂點坐標(biāo)為(左,頂)励七,矩形的右下頂點坐標(biāo)為(右智袭,底),兩個頂點就可以確定一個矩形的位置掠抬。

右和底坐標(biāo)稍微特殊补履,跟python列表索引規(guī)則一樣,是左閉右開的剿另◇锎福可以理解為[左, 右)[頂贬蛙, 底)這樣左閉右開的區(qū)間。比如(3, 2, 8, 9)就表示了橫坐標(biāo)范圍[3, 7]谚攒;縱坐標(biāo)范圍[2, 8]的矩形區(qū)域阳准。

(1) 常用屬性

  • PIL.Image.filename

    圖像源文件的文件名或者路徑,只有使用open()方法創(chuàng)建的對象有這個屬性馏臭。

    類型:字符串

  • PIL.Image.format

    圖像源文件的文件格式野蝇。

  • PIL.Image.mode

    圖像的模式,一般來說是“1”, “L”, “RGB”, 或者“CMYK” 括儒。

  • PIL.Image.size

    圖像的大小

  • PIL.Image.width

    圖像的寬度

  • PIL.Image.height

    圖像的高度

  • PIL.Image.info

    圖像的一些信息绕沈,為字典格式

(2)常用方法

  • 裁剪圖片

Image使用crop()方法來裁剪圖像,此方法需要傳入一個矩形元祖參數(shù)帮寻,返回一個新的Image對象乍狐,對原圖沒有影響。

croped_im = im.crop((100, 100, 200, 200))

注意:圖片在計算機中是一個矩陣形式存在

  • 復(fù)制與粘貼圖像

復(fù)制圖像使用copy()方法:

copyed_im = im.copy()

粘貼圖像使用paste()方法:

croped_im = im.crop((100, 100, 200, 200))
im.paste(croped_im, (0, 0))

im對象調(diào)用了paste()方法固逗,第一個參數(shù)是被裁剪下來用來粘貼的圖像浅蚪,第二個參數(shù)是一個位置參數(shù)元祖,這個位置參數(shù)是粘貼的圖像的左頂點烫罩。

  • 調(diào)整圖像的大小

調(diào)整圖像大小使用resize()方法:

resized_im = im.resize((width, height))

resize()方法會返回一個重設(shè)了大小的Image對象惜傲。

或者使用thumbnail()方法

im = Image.open('test.jpg')
#獲得圖像尺寸
w, h = im.size  
# 縮放到50%
im.htumbnail((w//2, h//2))  
#顯示圖片
im.show()  

thumbnail() 方法可以用來制作縮略圖。它接受一個二元數(shù)組作為縮略圖的尺寸贝攒,然后將示例縮小到指定尺寸

  • 旋轉(zhuǎn)圖像和翻轉(zhuǎn)圖像

旋轉(zhuǎn)圖像使用rotate()方法盗誊,此方法按逆時針旋轉(zhuǎn),并返回一個新的Image對象:

# 逆時針旋轉(zhuǎn)90度
im.rotate(90)
im.rotate(180)
im.rotate(20, expand=True)

旋轉(zhuǎn)的時候隘弊,會將圖片超出邊界的邊角裁剪掉哈踱。如果加入expand=True參數(shù),就可以將圖片邊角保存住长捧。

翻轉(zhuǎn)圖像使用transpose()

# 水平翻轉(zhuǎn)
im.transpose(Image.FLIP_LEFT_RIGHT)
# 垂直翻轉(zhuǎn)
im.transpose(Image.FLIP_TOP_BOTTOM)
  • 獲得圖片通道名稱
im.getbands()
  • 通過通道分割圖片
(1) split()

split()可以將多通道圖片按通道分割為單通道圖片。返回各個通道的灰度圖組成的元組

R, G, B = im.split()

split()方法返回的是一個元祖吻贿,元祖中的元素則是分割后的單個通道的圖片串结。

(2)getchannel(channel)

getchannel()可以獲取單個通道的圖片:

R = im.getchannel("R")
  • 模式轉(zhuǎn)化
img = im.convert("L")   #轉(zhuǎn)為灰度
  • 獲取單個像素的值

使用getpixel(xy)方法可以獲取單個像素位置的值:

im.getpixel((100, 100))

傳入的xy需要是一個元祖形式的坐標(biāo)。

如果圖片是多通道的舅列,那么返回的是一個元祖肌割。

  • 加載圖片全部數(shù)據(jù)

我們可以使用load()方法加載圖片所有的數(shù)據(jù),并比較方便的修改像素的值:

pixdata = im.load()
pixdata[100,200] = 255

此方法返回的是一個PIL.PyAccess帐要,可以通過這個類的索引來對指定坐標(biāo)的像素點進行修改把敞。

  • 獲取全部像素內(nèi)容

getdata(band = None) 方法,用來獲取 Image 類的對象中的像素內(nèi)容

該方法會將圖片中的像素內(nèi)容榨惠,逐行逐行地拼接起來奋早,作為一個完整的序列返回盛霎。方法的返回類型,是 PIL 庫的內(nèi)部類型耽装。我們可以用 list(im.getdata()) 得到標(biāo)準(zhǔn)的 Python list 對象愤炸。

band 意味「通道」。當(dāng) band = None 時掉奄,方法返回所有通道的像素內(nèi)容规个;當(dāng) band = 0時,則返回第一個通道的像素內(nèi)容姓建。例如诞仓,對于 RGB 模式的位圖,band = 0 返回 R 通道的內(nèi)容速兔;band = 2 返回 B 通道的內(nèi)容墅拭。

from PIL import Image

im = Image.open('test.jpg')
print(im.getdata())  #獲取所有通道的值 類似生成器的對象
print(list(im.getdata(0)))  #獲取第一個通道的值, 轉(zhuǎn)化為列表
  • 關(guān)閉圖片并釋放內(nèi)存

此方法會刪除圖片對象并釋放內(nèi)存

im.close()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市憨栽,隨后出現(xiàn)的幾起案子帜矾,更是在濱河造成了極大的恐慌,老刑警劉巖屑柔,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屡萤,死亡現(xiàn)場離奇詭異,居然都是意外死亡掸宛,警方通過查閱死者的電腦和手機死陆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唧瘾,“玉大人措译,你說我怎么就攤上這事∈涡颍” “怎么了领虹?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長求豫。 經(jīng)常有香客問我塌衰,道長,這世上最難降的妖魔是什么蝠嘉? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任最疆,我火速辦了婚禮,結(jié)果婚禮上蚤告,老公的妹妹穿的比我還像新娘努酸。我一直安慰自己,他們只是感情好杜恰,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布获诈。 她就那樣靜靜地躺著仍源,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烙荷。 梳的紋絲不亂的頭發(fā)上镜会,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音终抽,去河邊找鬼戳表。 笑死,一個胖子當(dāng)著我的面吹牛昼伴,可吹牛的內(nèi)容都是我干的匾旭。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼圃郊,長吁一口氣:“原來是場噩夢啊……” “哼价涝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起持舆,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤色瘩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逸寓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體居兆,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年竹伸,在試婚紗的時候發(fā)現(xiàn)自己被綠了泥栖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡勋篓,死狀恐怖吧享,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情譬嚣,我是刑警寧澤钢颂,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站拜银,受9級特大地震影響殊鞭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盐股,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一钱豁、第九天 我趴在偏房一處隱蔽的房頂上張望耻卡。 院中可真熱鬧疯汁,春花似錦、人聲如沸卵酪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溢豆,卻和暖如春蜒简,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漩仙。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工搓茬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人队他。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓卷仑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親麸折。 傳聞我的和親對象是個殘疾皇子锡凝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 本文地址:http://www.reibang.com/p/3740dec1f436 1. 簡介 Python傳...
    王南北丶閱讀 3,504評論 4 8
  • Image讀出來的是PIL的類型,而skimage.io讀出來的數(shù)據(jù)是numpy格式的 輸出可以看出Img讀圖片的...
    jiandanjinxin閱讀 97,100評論 2 52
  • 挫敗感 每個人都會很努力的去生活垢啼,去學(xué)習(xí)窜锯,去奮斗,可是如果換來的是失敗芭析,就會讓人產(chǎn)生失敗感锚扎,但是如果相反,如果你成...
    蝸牛吃韭菜閱讀 762評論 0 0
  • 我是卓佐放刨,這是我的第205篇原創(chuàng)文工秩。 上午,收到福州W寄來的快遞进统,寄來她自制的燉了12小時以上的冰糖檸檬膏助币,還給小...
    迎慶心烘焙閱讀 688評論 2 5