电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

模式P:

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

下面我們使用默認(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圖像處理庫(kù)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圖像處理庫(kù)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圖像處理庫(kù)PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

模式“YCbCr”:

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

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

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

Python圖像處理庫(kù)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圖像處理庫(kù)PIL中圖像格式轉(zhuǎn)換的實(shí)現(xiàn)

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

以上就是Python圖像處理庫(kù)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)文章:
主站蜘蛛池模板: 广东西屋电气有限公司-广东西屋电气有限公司 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 科普仪器菏泽市教育教学仪器总厂 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | DAIKIN电磁阀-意大利ATOS电磁阀-上海乾拓贸易有限公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 砂磨机_立式纳米砂磨机_实验室砂磨机-广州儒佳化工设备厂家 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 无缝钢管-聊城无缝钢管-小口径无缝钢管-大口径无缝钢管 - 聊城宽达钢管有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 广州小程序开发_APP开发公司_分销商城系统定制_小跑科技 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 学生作文网_中小学生作文大全与写作指导 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 广东成考网-广东成人高考网| 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 |