Python PIL學習筆記
一、介紹
PIL (Python Imaging Library)是 Python 的第三方擴充套件庫,常用來做影象處理。
二、安裝
首先,安裝PIL,按照http://www.pythonware.com/products/pil/index.htm下載地址得到一個執行檔案,直接執行安裝的時候會出現下圖的情況,報錯2.7版本的Python沒有安裝,可是我都用了這麼久的Python了,肯定是有安裝的。網上查了一下問題,官網上面的PIL都是32bit的,所以,沒有辦法找到安裝Python的路徑。
安裝成功後測試:import Image
如果沒有報錯就證明安裝成功了,
三、操作測試:
1、開啟圖片:
import Image
im = Image.open(r'D:\1.jpg')
2、檢視圖片資訊
開啟圖片之後,我們可以檢視一些圖片的資訊,如im.format,im.size,im.mode。
format是識別影象的格式,size返回一個元組,畫素值的長和寬,測試的圖片的mode返回了一個RGB,對應紅綠藍三個通道的顏色,此外,mode返回的格式還有可能是1(1位畫素,黑和白,存成8位畫素),L(8位畫素,黑白)
RGB色彩模式的為影象中每一個畫素的RGB分量分配一個0~255(8位表示,2^8=255)範圍的強度值,RGB影象只是用三種顏色,可以使他們按照不同的比例混合,在螢幕上呈現255*255*255種顏色。
print im.format,im.size,im.mode
得到的結果:JPEG (350, 267) RGB
3、顯示圖片
呼叫im.show()會在圖片的檢視工具中顯示當前操作的image物件。
4、拷貝,黏貼,合併
import Image
im = Image.open(r'D:\1.jpg')
box = (70,0,240,200)#設定要拷貝的地區的大小,裡面含有四個元素,為左上右下
region = im.crop(box)#按照box的大小拷貝到region裡面
region.show()
拷貝到region裡面的效果(相當於截圖):
import Image im = Image.open(r'D:\1.jpg') box = (100,100,500,500) region = im.crop(box) region.show() box = (70,0,240,200) region = im.crop(box) region = region.transpose(Image.ROTATE_180)#旋轉180度 im.paste(region,box)#把改造後的圖片放到原本的地方 im.show()
得到的結果:
5、RGB分離與重組
每一個RGB都是有三個通道的灰度圖疊加的,PIL提供了講著三個通道分離的方法:
import Image
im = Image.open(r'D:\1.jpg')
r,g,b = im.split()
r.show()
g.show()
b.show()
其中,r的效果圖:
將分離的三色通道重組:
import Image
im = Image.open(r'D:\1.jpg')
r,g,b = im.split()
im = Image.merge('RGB',(r,b,g))#把b和g的位置換了一下
im.show()
得到的效果圖:
6、幾何轉變
import Image
im = Image.open(r'D:\1.jpg')
im = im.rotate(45)#逆時針旋轉45度
im.show()
上文有用到transpose效果一樣,只是可以自己定義旋轉的方式。效果如下:
7、濾鏡
PIL當中也支援濾鏡,通過這些預定義的濾鏡,可以方便的對影象進行一些過濾操作,可以降低將來處理的複雜度,
import Image
import ImageFilter
im = Image.open(r'D:\1.jpg')
im1 = im.filter(ImageFilter.BLUR)#模糊
im1.show()
im = im.filter(ImageFilter.CONTOUR)#輪廓
im.show()
得到的模糊效果圖:
得到的輪廓效果圖:
8、對每個畫素點進行操作
import Image
import ImageFilter
im = Image.open(r'D:\1.jpg')
im1 = im.point(lambda i : i*1.2)#匿名函式
im1.show()
對每個畫素點做了加強處理:
總算做完了,感覺用動漫人物做處理,效果不是很好,下次選張風景的圖片~
Reference: