程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python圖像處理中PIL中image.convert()函數

編輯:Python

Python中的用PIL(圖像處理庫)來實現不同圖像格式的轉換。

其中PIL的九種不同模式:1、L、P、RGB、RGBA、CMYK、YCbCr、I、F。
convert()函數講解:

from PIL importImage
img = Image.open(“圖片的路徑位置”)

對於彩色圖像,不管其圖像格式是PNG,還是BMP,或者JPG,在PIL中,使用Image模塊的open()函數打開後,返回的圖像對象的模式都是“RGB”。

而對於灰度圖像,不管其圖像格式是PNG,還是BMP,或者JPG,打開後,其模式為“L”。

對於PNG、BMP和JPG彩色圖像格式之間的互相轉換都可以通過Image模塊的open()和save()函數來完成。

我們接下來總結一下PIL的另外幾種不同模式:

1、 模式“1”

模式“1”為二值圖像,非黑即白。但是它每個像素用8個bit表示,0表示黑,255表示白。

image.convert("1")

2、 模式“L”

模式“L”為灰色圖像,它的每個像素用8個bit表示,0表示黑,255表示白,其他數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“L”模式是按照下面的公式轉換的:

L = R * 299/1000 + G * 587/1000+ B * 114/1000

image.convert("L")

3、 模式“P”

模式“P”為8位彩色圖像,它的每個像素用8個bit表示,其對應的彩色值是按照調色板查詢出來的。

image.convert("P")

4、 模式“RGBA”

模式“RGBA”為32位彩色圖像,它的每個像素用32個bit表示,其中24bit表示紅色、綠色和藍色三個通道,另外8bit表示alpha通道,即透明通道。

image.convert("RGBA")

5、 模式“CMYK”

模式“CMYK”為32位彩色圖像,它的每個像素用32個bit表示。模式“CMYK”就是印刷四分色模式,它是彩色印刷時采用的一種套色模式,利用色料的三原色混色原理,加上黑色油墨,共計四種顏色混合疊加,形成所謂“全彩印刷”。

四種標准顏色是:C:Cyan = 青色,又稱為‘天藍色’或是‘湛藍’M:Magenta = 品紅色,又稱為‘洋紅色’;Y:Yellow = 黃色;K:Key Plate(blacK) = 定位套版色(黑色)。

image.convert("CMYK")

6、 模式“YCbCr”

模式“YCbCr”為24位彩色圖像,它的每個像素用24個bit表示。YCbCr其中Y是指亮度分量,Cb指藍色色度分量,而Cr指紅色色度分量。人的肉眼對視頻的Y分量更敏感,因此在通過對色度分量進行子采樣來減少色度分量後,肉眼將察覺不到的圖像質量的變化。

模式“RGB”轉換為“YCbCr”的公式如下:

Y= 0.257R+0.504G+0.098B+16
Cb = -0.148
R-0.291G+0.439B+128
Cr = 0.439R-0.368G-0.071*B+128

image.convert("YCbCr")

7、 模式“I”

模式“I”為32位整型灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“I”模式是按照下面的公式轉換的

I = R * 299/1000 + G * 587/1000 + B * 114/1000

image.convert("I")

8、 模式“F”

模式“F”為32位浮點灰色圖像,它的每個像素用32個bit表示,0表示黑,255表示白,(0,255)之間的數字表示不同的灰度。在PIL中,從模式“RGB”轉換為“F”模式是按照下面的公式轉換的:

F = R * 299/1000+ G * 587/1000 + B * 114/1000

image.convert("F")

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved