python做基本的图像处理
PIL是python中的圖像處理類庫,為python提供了基本的圖像處理和基本操作。而PIL中最重要的就是Image模塊,下面給出具體的例子來理解此模塊。
讀取一幅圖像
- 我們用Image模塊中的open()來實現.
對于PNG,JPG和BMP等不同格式的彩色圖像之間的轉換都可以通過Image模塊來完成,具體地說,在打開這些圖像時,PIL會將他們解碼為三通道的'RGB'圖像,人們可以基于'RGB'圖像進行處理。
轉化為灰度圖像
- 我們用convert()方法來實現圖像的灰度轉化。
Convert()會根據傳入參數的不同將圖像變成不同的模式。PIL中有九種不同模式。分別為1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
其中,模式‘1’為二值圖像,非黑即白。但是它每個像素用8個bit表示,0表示黑,255表示白。
模式‘L’為灰色圖像它的每個像素用8個bit表示,0表示黑,255表示白,其他數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“L”模式是按照下面的公式轉換的:
L = R * 299/1000 + G * 587/1000+ B * 114/1000
模式“P”為8位彩色圖像,它的每個像素用8個bit表示,其對應的彩色值是按照調色板查詢出來的。
模式“RGBA”為32位彩色圖像,它的每個像素用32個bit表示,其中24bit表示紅色、綠色和藍色三個通道,另外8bit表示alpha通道,即透明通道。
模式“CMYK”為32位彩色圖像,它的每個像素用32個bit表示。模式“CMYK”就是印刷四分色模式,它是彩色印刷時采用的一種套色模式,利用色料的三原色混色原理,加上黑色油墨,共計四種顏色混合疊加,形成所謂“全彩印刷”。
模式“YCbCr”為24位彩色圖像,它的每個像素用24個bit表示。YCbCr其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量后,肉眼將察覺不到的圖像質量的變化。
模式“RGB”轉換為“YCbCr”的公式如下:
Y= 0.257R+0.504G+0.098B+16
Cb = -0.148R-0.291G+0.439B+128
Cr = 0.439R-0.368G-0.071*B+128
模式“I”為32位整型灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“I”模式是按照下面的公式轉換的:
I = R * 299/1000 + G * 587/1000 + B * 114/1000
模式“F”為32位浮點灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“F”模式是按照下面的公式轉換的:
F = R * 299/1000+ G * 587/1000 + B * 114/1000
- 我們以灰度圖像為例,將目標圖像轉換成灰度圖像,由上可知,我們要給convert()方法傳入參數“L”,具體代碼如下:
轉換圖像的格式
- 通過save()方法,PIL可以將圖像保存成多種格式的文件,當傳入不同的擴展名時,它會根據擴展名自動轉換圖像的格式。
創建縮略圖
- thumbnail()方法接受一個一元組參數,分別對應著縮略圖的寬高,在縮略時,函數會保持圖片的寬高比例,如果輸入的參數寬高和原圖寬高比不同,則會依據最小對應邊進行于按比例縮放。
比如:一張圖片為300*420大小的圖片,當參數為(200,200)時,生成的縮略圖大小為71*100,保持原圖的寬高比
裁剪圖像區域
- 使用PIL中的crop()方法可以從一幅圖像中裁剪指定區域,該區域使用四元組來指定,四元組的坐標依次是(左,上,右,下)PIL中指定坐標系的左上角坐標為(0,0).
調整尺寸和旋轉
- 我們用resize()方法來調整一幅圖像的尺寸,該方法的參數是一個元組,用來指定新圖像的大小:例如 out=image.resize((32,32))
- 要旋轉一幅圖像,可以使用逆時針方式表示旋轉角度,然后用rotate()方法
?
出處:https://www.cnblogs.com/LouieZhang/p/8529241.html
轉載于:https://www.cnblogs.com/mq0036/p/8547594.html
總結
以上是生活随笔為你收集整理的python做基本的图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Golang源码探索(三) GC的实现原
- 下一篇: websocket python爬虫_p