日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

瀏覽:3日期:2022-08-06 09:46:45

在數(shù)字圖像處理中,針對(duì)不同的圖像格式有其特定的處理算法。所以,在做圖像處理之前,我們需要考慮清楚自己要基于哪種格式的圖像進(jìn)行算法設(shè)計(jì)及其實(shí)現(xiàn)。本文基于這個(gè)需求,使用python中的圖像處理庫PIL來實(shí)現(xiàn)不同圖像格式的轉(zhuǎn)換。

對(duì)于彩色圖像,不管其圖像格式是PNG,還是BMP,或者JPG,在PIL中,使用Image模塊的open()函數(shù)打開后,返回的圖像對(duì)象的模式都是“RGB”。而對(duì)于灰度圖像,不管其圖像格式是PNG,還是BMP,或者JPG,打開后,其模式為“L”。

通過之前的博客對(duì)Image模塊的介紹,對(duì)于PNG、BMP和JPG彩色圖像格式之間的互相轉(zhuǎn)換都可以通過Image模塊的open()和save()函數(shù)來完成。具體說就是,在打開這些圖像時(shí),PIL會(huì)將它們解碼為三通道的“RGB”圖像。用戶可以基于這個(gè)“RGB”圖像,對(duì)其進(jìn)行處理。處理完畢,使用函數(shù)save(),可以將處理結(jié)果保存成PNG、BMP和JPG中任何格式。這樣也就完成了幾種格式之間的轉(zhuǎn)換。同理,其他格式的彩色圖像也可以通過這種方式完成轉(zhuǎn)換。當(dāng)然,對(duì)于不同格式的灰度圖像,也可通過類似途徑完成,只是PIL解碼后是模式為“L”的圖像。

這里,我想詳細(xì)介紹一下Image模塊的convert()函數(shù),用于不同模式圖像之間的轉(zhuǎn)換。

Convert()函數(shù)有三種形式的定義,它們定義形式如下:

im.convert(mode)⇒imageim.convert(“P”, **options)⇒imageim.convert(mode, matrix)⇒image

使用不同的參數(shù),將當(dāng)前的圖像轉(zhuǎn)換為新的模式,并產(chǎn)生新的圖像作為返回值。

本文我們采樣的圖片是lena的照片:

模式“1”:

>>> from PIL import Image>>> lena = Image.open('lena.bmp')>>> lena.mode’RGB’>>> lena.getpixel((0,0))(226, 137, 125)>>> lena_1 = lena.convert('1')>>> lena_1.mode’1’>>> lena_1.size(512, 512)>>> lena_1.getpixel((0,0))>>> lena_1.getpixel((10,10))>>> lena_1.getpixel((10,120))>>> lena_1.getpixel((130,120))>>> lena_1.show()

結(jié)果:

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“L”:

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

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

下面我們將lena圖像轉(zhuǎn)換為“L”圖像。

>>> lena_L = lena.convert('L')>>> lena_L.mode’L’>>> lena_L.size(512, 512)>>> lena_L.getpixel((0,0))>>> lena.getpixel((0,0))(226, 137, 125)>>> lena_L.show()>>> lena_L.save('lena_l.bmp')>>>

對(duì)于第一個(gè)像素點(diǎn),原始圖像lena為(197, 111, 78),其轉(zhuǎn)換為灰色值為:

197 *299/1000 + 111 * 587/1000 + 78 * 114/1000= 132.952,PIL中只取了整數(shù)部分,即為132。

轉(zhuǎn)換后的圖像lena_L如下:

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式P:

模式“P”為8位彩色圖像,它的每個(gè)像素用8個(gè)bit表示,其對(duì)應(yīng)的彩色值是按照調(diào)色板查詢出來的。

下面我們使用默認(rèn)的調(diào)色板將lena圖像轉(zhuǎn)換為“P”圖像。

example:

>>> lena_P = lena.convert('P')>>> lena_P.mode’P’>>> lena_P.getpixel((0,0))

結(jié)果:

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“RGBA”:

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

下面我們將模式為“RGB”的lena圖像轉(zhuǎn)換為“RGBA”圖像。

>>> lena_rgba = lena.convert('RGBA')>>> >>> >>> >>> lena_rgba.mode’RGBA’>>> lena_rgba.getpixel((0,0))(226, 137, 125, 255)>>> lena_rgba.getpixel((0,1))(226, 137, 125, 255)>>> lena_rgba.show()

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“CMYK”:

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

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

下面我們將模式為“RGB”的lena圖像轉(zhuǎn)換為“CMYK”圖像。

>>> lena_cmyk = lena.convert('CMYK')>>> lena_cmyk.mode’CMYK’>>> lena_cmyk.getpixel((0,0))(29, 118, 130, 0)>>> lena_cmyk.getpixel((0,1))(29, 118, 130, 0)>>> lena_cmyk.show()

從實(shí)例中可以得知PIL中“RGB”轉(zhuǎn)換為“CMYK”的公式如下:

C = 255 - RM = 255 - GY = 255 - BK = 0

由于該轉(zhuǎn)換公式比較簡(jiǎn)單,轉(zhuǎn)換后的圖像顏色有些失真。

轉(zhuǎn)換后的圖像lena_cmyk如下:

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“YCbCr”:

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

模式“RGB”轉(zhuǎn)換為“YCbCr”的公式如下:

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

下面我們將模式為“RGB”的lena圖像轉(zhuǎn)換為“YCbCr”圖像。

>>> lena_ycbcr = lena.convert('YCbCr')>>> lena_ycbcr.mode’YCbCr’>>> lena_ycbcr.getpixel((0,0))(162, 107, 173)>>> lena.getpixel((0,0))(226, 137, 125)>>>

按照公式,Y =0.257*197+0.564*111+0.098*78+16= 136.877

Cb=-0.148*197-0.291*111+0.439*78+128= 100.785Cr = 0.439*197-0.368*111-0.071*78+128 = 168.097

由此可見,PIL中并非按照這個(gè)公式進(jìn)行“RGB”到“YCbCr”的轉(zhuǎn)換。

轉(zhuǎn)換后的圖像lena_ycbcr如下:

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“I”

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

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

下面我們將模式為“RGB”的lena圖像轉(zhuǎn)換為“I”圖像。

>>> lena_I = lena.convert('I')>>> lena_I.mode’I’>>> lena_I.getpixel((0,0))>>> lena_I.getpixel((0,1))>>> lena_L = lena.convert('L')>>> lena_L.getpixel((0,0))>>> lena_L.getpixel((0,1))

從實(shí)驗(yàn)的結(jié)果看,模式“I”與模式“L”的結(jié)果是完全一樣,只是模式“L”的像素是8bit,而模式“I”的像素是32bit。 

模式“F”

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

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

下面我們將模式為“RGB”的lena圖像轉(zhuǎn)換為“F”圖像。

>>> lena_F = lena.convert('F')>>> lena_F.mode’F’>>> lena_F.getpixel((0,0))162.2429962158203>>> lena_F.getpixel((0,1))162.2429962158203>>>

Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“F”與模式“L”的轉(zhuǎn)換公式是一樣的,都是RGB轉(zhuǎn)換為灰色值的公式,但模式“F”會(huì)保留小數(shù)部分,如實(shí)驗(yàn)中的數(shù)據(jù).

以上就是Python圖像處理庫PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于PIL 圖像格式轉(zhuǎn)換的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产午夜久久av| 在线成人动漫av| 在线亚洲免费| 蜜桃tv一区二区三区| 亚洲高清影视| 亚洲在线免费| 日韩在线网址| 国产精品99精品一区二区三区∴ | 人人爱人人干婷婷丁香亚洲| 日韩专区欧美专区| 亚洲精品亚洲人成在线观看| 视频一区日韩精品| 国产精品一页| 国产v综合v| 亚洲免费网址| 国产日韩亚洲| 精品成人免费一区二区在线播放| 激情久久五月| 日韩精品一区二区三区中文| 国产精品传媒麻豆hd| 免费在线小视频| 亚洲丝袜美腿一区| 国产一精品一av一免费爽爽| 国产一区二区三区视频在线| 国产videos久久| 悠悠资源网久久精品| 国产精品传媒麻豆hd| 日韩一区亚洲二区| 亚洲精品乱码日韩| 久久婷婷丁香| 国产精品啊啊啊| 亚洲综合日本| 亚洲一级少妇| 国产精区一区二区| 六月婷婷一区| 秋霞影院一区二区三区| 蜜桃av一区二区三区电影| 成人国产精选| 欧美日韩1区2区3区| 黄色av一区| 久久午夜影院| 91精品一区| 国产农村妇女精品一区二区 | 日本国产精品| 久久av偷拍| 日韩欧美中文字幕一区二区三区| 欧美综合另类| 久久久蜜桃一区二区人| 精品伊人久久| 国产欧美自拍| 日韩激情一二三区| 香蕉久久久久久| 亚洲视频国产| 五月天综合网站| 在线成人直播| 亚洲91在线| 中文字幕日韩高清在线| 国产精品97| 一区在线视频观看| 激情婷婷亚洲| 亚洲国产专区| 欧美日韩一二三四| 激情久久久久久| 九一国产精品| 亚洲一区二区三区四区五区午夜| 欧美1区免费| 婷婷亚洲五月| 久久大逼视频| 欧美中文字幕| 五月综合激情| 亚洲91网站| 国产精品一区二区三区四区在线观看| 日韩精品一区二区三区中文| 国产日韩一区二区三区在线| 久久精品资源| 丝袜美腿一区| 久久久夜精品| 噜噜噜久久亚洲精品国产品小说| 中文无码日韩欧| 日韩精品一级| 国产高清日韩| 91精品综合| 日韩精品五月天| 日本欧美一区| 久久黄色影视| 福利一区和二区| 久久天堂成人| 亚洲三级在线| 国产欧美啪啪| 伊人网在线播放| 亚洲高清影视| 日本中文字幕一区二区| 国产高清亚洲| 久久要要av| 日韩av字幕| 91看片一区| 中文字幕av一区二区三区人| 黄色欧美在线| 亚洲免费观看| 日韩欧美中文字幕电影| 成人午夜网址| 在线观看亚洲精品福利片| 国产日产高清欧美一区二区三区 | 精品中文一区| 国产精品综合| 亚洲午夜黄色| 嫩呦国产一区二区三区av| 伊人久久大香线蕉av不卡| 日韩在线观看一区二区三区| 日韩欧美精品综合| 97精品久久| 在线视频精品| 美女精品视频在线| 欧美另类专区| 麻豆91精品视频| 免费看精品久久片| 欧美成人亚洲| 日韩国产激情| 日韩精品a在线观看91| 欧美中文字幕| 精品中文字幕一区二区三区av| 久久久久九九精品影院| 亚洲精一区二区三区| 日韩亚洲国产欧美| 九九精品调教| 国产精品黑丝在线播放| 日韩精品成人在线观看| 亚洲激情社区| 自由日本语亚洲人高潮| 日韩精品2区| 激情综合五月| 精品国产成人| 狂野欧美性猛交xxxx| 国产精品亚洲欧美| 国产免费播放一区二区| 日韩不卡手机在线v区| 日日夜夜免费精品视频| 99国产精品自拍| 亚洲在线网站| 免费在线观看不卡| 日韩精品三级| 日韩国产精品久久久久久亚洲| 伊人影院久久| 亚洲中字黄色| 色婷婷成人网| 国产精品一区二区三区av麻| 国产麻豆一区| 国产精品国产一区| 欧美午夜不卡| 伊人久久大香伊蕉在人线观看热v| 香蕉久久久久久| 麻豆高清免费国产一区| 日韩在线第七页| 国产免费成人| 欧美日韩亚洲一区| 日韩大片在线观看| 久久福利影视| 日韩欧美中文字幕在线视频| 欧美亚洲三区| 欧美好骚综合网| 在线亚洲激情| 国产精品日本一区二区三区在线 | 国产精品久久久久久妇女| 国产精品毛片久久久| 日韩精品免费一区二区在线观看| 巨乳诱惑日韩免费av| 国产精品网在线观看| 在线日韩中文| 午夜亚洲福利| 92国产精品| 日韩国产欧美视频| 四虎4545www国产精品| 日韩国产在线不卡视频| 97精品国产| 亚州av日韩av| 久久久久免费av| 国产精品第一国产精品| 91九色精品| 久久伊人国产| 日本色综合中文字幕| 99精品视频精品精品视频| 国产精品多人| 亚洲免费成人av在线| 日韩av有码| 久久国产乱子精品免费女| 婷婷色综合网| 麻豆网站免费在线观看| 日韩一区网站| 亚洲激情不卡| 激情欧美一区| 日本美女一区| 精品久久97| 久久亚州av| 精品深夜福利视频| 久久国产88| japanese国产精品| 亚洲国产一区二区三区在线播放 | 久久久久97| 国产精品香蕉| 日韩av一二三|