Python圖像處理

圖像處理

本章工作任務(wù)

u 任務(wù)1:了解Pillow庫的基本操作

u 任務(wù)2:掌握圖像格式轉(zhuǎn)換

u 任務(wù)3:掌握改變圖像尺寸

u 任務(wù)4:掌握剪裁圖像

u 任務(wù)5:掌握濾鏡處理

本章技能目標(biāo)及重難點(diǎn)

編號(hào)技能點(diǎn)描述級別

1了解Pillow庫的基本操作★

2掌握圖像格式轉(zhuǎn)換★★

3u掌握改變圖像尺寸★★★

4掌握剪裁圖像★★★

5掌握濾鏡處理★★★

注: "★"理解級別 "★★"掌握級別 "★★★"應(yīng)用級別

本章學(xué)習(xí)目標(biāo)

本章開始學(xué)習(xí)Python圖像處理瓶颠,需要同學(xué)們理解如何使用Pillow來操作圖像疾牲,實(shí)現(xiàn)格式轉(zhuǎn)換,改變大小尺寸,裁剪贾惦,濾鏡處理梧油。

本章學(xué)習(xí)建議

本章適合有Python基礎(chǔ)的學(xué)員學(xué)習(xí)渠驼。

本章內(nèi)容(學(xué)習(xí)活動(dòng))

1.1為什么使用Pillow敢会?

Python的圖像處理通常用Pillow(Python Imaging Library(Fork))來進(jìn)行。Pillow有PIL(Python Imaging Library)的分支工程開發(fā)而來陷谱。由于PIL已經(jīng)停止開發(fā)及維護(hù)烙博,所以如今Pillow成為了主流。他支持JPEG烟逊,PNG渣窜,GIF,BMP等多種圖像格式宪躯。

1.1.1安裝Pillow

Pillow與多種處理圖像數(shù)據(jù)的程序庫存在依賴關(guān)系乔宿,因此安裝時(shí)需要多級注意。目前Pillow在PyPI上提供了面向Window和OS X的wheel安裝包访雪。在Window和OS X上安裝(包括用pip命令安裝)時(shí)不需要進(jìn)行編譯详瑞。如果使用的是其他平臺(tái),那么由于需要從sdist進(jìn)行c拓展的編譯臣缀,所以必須準(zhǔn)備編譯器和各類圖像處理庫坝橡。

使用命令pip,進(jìn)行安裝精置。

1.1.2Ubuntu安裝Pillow

如果使用源碼構(gòu)建计寇,我們需要準(zhǔn)備進(jìn)行Pillow編譯時(shí)所需的庫。

首先,因?yàn)樾枰幾gC擴(kuò)展番宁,所以需要一些基本的開發(fā)工具蹲堂。我們先來確認(rèn)一下C擴(kuò)展的安裝。

pkg-config python2.7 --libs --cflags

安裝Pillow需要的程序包

sudo apt-get install libjpeg-dev libopenjpeg-dev zliblgpdev libtiff5-dev

現(xiàn)在所需的工具和庫已經(jīng)齊全了贝淤,可以使用pip進(jìn)行安裝了。

pip install pillow

1.2如何進(jìn)行圖像格式轉(zhuǎn)換

圖像文件的格式轉(zhuǎn)換通過在Image類的save方法的傳值參數(shù)中指定格式并保存來完成政供。下面播聪,我們打開當(dāng)前目錄下名為python.gif的圖像文件。

將其轉(zhuǎn)換為JPEG格式布隔,并保存在python_convert,jpg文件中离陶。

可以看到,程序在讀取完文件之后將圖像模式轉(zhuǎn)為了RGB衅檀。

在GIF以及不足256色的PNG招刨、BMP等格式中,顏色信息都保存在調(diào)色板數(shù)據(jù)塊里哀军。這類文件用Pillow打開是分為P模式(調(diào)色板模式)和I模式(單色模式)沉眶。另外,JPEG文件有時(shí)還會(huì)是CMYK模式杉适。當(dāng)模式不支持save方式指定的格式時(shí)谎倔,程序會(huì)報(bào)錯(cuò),所以要先用convert方法進(jìn)行模式轉(zhuǎn)換猿推。



如果你在學(xué)習(xí)Python的過程當(dāng)中有遇見任何問題片习,可以加入我的python交流學(xué)企鵝群:【611+530+101】,多多交流問題蹬叭,互幫互助藕咏,群里有不錯(cuò)的學(xué)習(xí)教程和開發(fā)工具。學(xué)習(xí)python有任何問題(學(xué)習(xí)方法秽五,學(xué)習(xí)效率孽查,如何就業(yè)),可以隨時(shí)來咨詢我




1.3如何改變圖像尺寸

如果想改變圖像尺寸筝蚕,可以使用Image類的thumbnail方法或resize方法卦碾。下面,我們打開當(dāng)前目錄下的python.jpg圖像文件起宽。

將其長款縮小一半后保存為python_thumbnail.jpg洲胖。

Image類的對象能夠通過size屬性以元祖的形式獲取圖像的長和寬。

thumbanil方法的第一個(gè)傳值參數(shù)制定了圖像長和寬的元祖坯沪,第二個(gè)傳值參數(shù)制定了濾鏡Image.ANTIALIAS绿映。濾鏡有NEAREST,BILINER、BICUBIC(雙三次方)叉弦、ANTIALIAS(抗鋸齒)這四種可供選擇丐一,其中使用ANTIALIAS

(抗鋸齒)修改尺寸后的圖像品質(zhì)最高(損失最小)淹冰。

在執(zhí)行thumbnail方法之后库车,會(huì)直接修改對象自身的圖像大小。但是樱拴,這個(gè)方法只能用于長寬比例不變的修改柠衍。變更長寬比例時(shí)需要使用resize方法。下面晶乔,我們打開當(dāng)前目錄下名為python.jpg的圖像文件珍坊,將其長度放大為2倍后保存為python_resize.jpg。

與thumbnail方法不同正罢,resize方法的返回值是修改尺寸之后的Image類的對象阵漏。它同thumbnail一樣,可以制定濾鏡翻具。

1.4如何進(jìn)行裁剪

Image類的crop方法能夠以長方形裁剪圖像履怯。下面,我們打開當(dāng)前目錄下名為python.jpg的圖像文件呛占,按照圖形的寬度從正中間裁剪一個(gè)長方形并保存為python_crop.jpg

crop方法的傳值參數(shù)是包含了4個(gè)值的元祖(Tuple)虑乖,這4個(gè)值代表長方形裁剪區(qū)域的左上角坐標(biāo)和右下角坐標(biāo)。crop的返回值為存有剪裁后圖像的Image類對象晾虑。


1.5對圖像進(jìn)行濾鏡處理

1.5.1全反色

進(jìn)行濾鏡處理必須獲取像素值疹味。像素值可以用Image類的getdata方法和getpixel方法來獲取。獲取的像素值為包含了R(紅)帜篇、G(綠)糙捺、B(藍(lán))3個(gè)值的范圍均為0,255。下面笙隙,我們打開當(dāng)前目錄下的名為python.jpg的圖像文件洪灯,將所有像素反色并保存為python_filter.jpg。

getdata()方法能夠返回一個(gè)迭代器竟痰,用于逐一訪問圖像的每一組像素值签钩。在上面例子中,我們注意去除了每個(gè)像素的像素值并進(jìn)行反色(255減去色值)坏快。等所有像素值處理完畢之后铅檩,用putdata方法替換了Image類的對象的像素。

1.5.2單像素反色

如果要獲取指定坐標(biāo)的像素值莽鸿,可以使用Image類的getpixel方法昧旨。下面拾给,我們打開當(dāng)前目錄下的名為python.jpg的圖像文件,講右上角的香色反色并保存為python_pixel.jpg兔沃。

1.5.3總結(jié)

getpixel方法的傳值參數(shù)為含有橫縱坐標(biāo)(起點(diǎn)為0)兩個(gè)值的元祖蒋得。改寫指定位置像素值時(shí)使用putpixel方法。這些方法的方便之處在于能夠制定坐標(biāo)乒疏,但是速度太慢额衙,因此一旦需要大量處理,他們的效率并不見得比getdata怕吴,putdata等方法更高入偷。類似如下代碼,沒有g(shù)etdata效率高械哟。

視頻學(xué)習(xí)更快捷了解Pillow的模塊的應(yīng)用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殿雪,一起剝皮案震驚了整個(gè)濱河市暇咆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丙曙,老刑警劉巖爸业,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異亏镰,居然都是意外死亡扯旷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門索抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钧忽,“玉大人,你說我怎么就攤上這事逼肯∷屎冢” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵篮幢,是天一觀的道長大刊。 經(jīng)常有香客問我,道長三椿,這世上最難降的妖魔是什么缺菌? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮搜锰,結(jié)果婚禮上伴郁,老公的妹妹穿的比我還像新娘。我一直安慰自己纽乱,他們只是感情好蛾绎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般租冠。 火紅的嫁衣襯著肌膚如雪鹏倘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天顽爹,我揣著相機(jī)與錄音纤泵,去河邊找鬼。 笑死镜粤,一個(gè)胖子當(dāng)著我的面吹牛捏题,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肉渴,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼公荧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了同规?” 一聲冷哼從身側(cè)響起循狰,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎券勺,沒想到半個(gè)月后绪钥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡关炼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年程腹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儒拂。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寸潦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出社痛,到底是詐尸還是另有隱情甸祭,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布褥影,位于F島的核電站池户,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凡怎。R本人自食惡果不足惜校焦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望统倒。 院中可真熱鬧寨典,春花似錦、人聲如沸房匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至井氢,卻和暖如春弦追,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背花竞。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工劲件, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人约急。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓零远,卻偏偏與公主長得像,于是被迫代替她去往敵國和親厌蔽。 傳聞我的和親對象是個(gè)殘疾皇子牵辣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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