如果需要處理的原圖及代碼,請移步小編的GitHub地址 傳送門:請點(diǎn)擊我 如果點(diǎn)擊有誤:https://github.com/LeBron-Jian/ComputerVisionPractice 這個是之前的筆記,自己看到了就順帶發(fā)出來,也是溫習(xí)一下,內(nèi)容可能不太全,算是入門貼吧。 前言:PIL 圖
傳送門: 請點(diǎn)擊我
如果點(diǎn)擊有誤:https://github.com/LeBron-Jian/ComputerVisionPractice
這個是之前的筆記,自己看到了就順帶發(fā)出來,也是溫習(xí)一下,內(nèi)容可能不太全,算是入門貼吧。
圖像處理是計算機(jī)視覺領(lǐng)域中不可或缺的一部分,而PIL(Python Imaging Library)庫和OpenCV(Open Source Computer Vision Library)是兩個常用的工具。今天這里主要學(xué)習(xí)以下PIL庫,PIL 是一個用于圖像處理的 Python 庫,提供了豐富的圖像處理功能。它包含了處理圖像的各種工具和算法,可以進(jìn)行圖像的打開、保存、剪裁、旋轉(zhuǎn)、縮放等操作。
PIL(Python Imaging Library)和 OpenCV 都是用于圖像處理的強(qiáng)大庫,它們各自有著不同的優(yōu)勢和適用場景。以下是一些導(dǎo)致 PIL 仍然被使用的原因:
首先是安裝,比較簡單:
下面是一個簡單的示例,演示了如何使用PIL庫來打開一個圖像文件,然后將圖像轉(zhuǎn)換為灰度圖,并保存到新的文件中:
雖然 OpenCV 在計算機(jī)視覺和更復(fù)雜的圖像處理任務(wù)中表現(xiàn)得非常強(qiáng)大,但選擇使用哪個庫通常取決于具體的需求和項目特點(diǎn)。在一些情況下,PIL 可能更為合適,而在其他情況下,特別是涉及到計算機(jī)視覺領(lǐng)域的任務(wù),OpenCV 可能更具優(yōu)勢。
總體來說,網(wǎng)上開源的一些計算機(jī)視覺中也使用PIL加載圖像,所以有不得不學(xué)習(xí)的理由,話不多說,開干:
Pillow的官網(wǎng)地址:https://pillow.readthedocs.io/en/stable/,其實打開后,什么都有,只是都是英文,對于部分同學(xué)不方面而已。
PIL:Python Imaging Library,已經(jīng)是Python平臺上的圖像處理標(biāo)準(zhǔn)庫了。由于PIL僅支持到Python2.7 ,加上年久失修,于是一群志愿者在PIL的基礎(chǔ)上創(chuàng)建了兼容的版本,名字叫Pillow,支持最新版本的Python3.X,又加了許多新特性。因此,我們可以直接安裝使用Pillow。
PIL中所涉及的基本概念有如下幾個:通道(bands)、模式(mode)、尺寸(size)、坐標(biāo)系統(tǒng)(coordinate system)、調(diào)色板(palette)、信息(info)和濾波器(filters)。
每張圖片都是由一個或者多個數(shù)據(jù)通道構(gòu)成。PIL允許在單張圖片中合成相同維數(shù)和深度的多個通道。
以RGB圖像為例,每張圖片都是由三個數(shù)據(jù)通道構(gòu)成,分別為R、G和B通道。而對于灰度圖像,則只有一個通道。
對于一張圖片的通道數(shù)量和名稱,可以通過方法getbands()來獲取。方法getbands()是Image模塊的方法,它會返回一個字符串元組(tuple)。該元組將包括每一個通道的名稱。
Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號,列表使用方括號,元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
方法getbands()的使用如下:
圖像的模式定義了圖像的類型和像素的位寬。當(dāng)前支持如下模式:
可以通過mode屬性讀取圖像的模式。其返回值是包括上述模式的字符串。
屬性mode的使用如下:
通過size屬性可以獲取圖片的尺寸。這是一個二元組,包含水平和垂直方向上的像素數(shù)。
屬性mode的使用如下:
在PIL(或Pillow)中,圖像的坐標(biāo)系統(tǒng)遵循常見的數(shù)學(xué)坐標(biāo)系,其中左上角是原點(diǎn)(0, 0),x軸向右增長,y軸向下增長。這意味著圖像的左上角具有坐標(biāo)
(0, 0)
,而右下角的坐標(biāo)是
(width-1, height-1)
。
以下是一個簡單的示例說明PIL的坐標(biāo)系統(tǒng):
輸出圖像:
在PIL(Python Imaging Library)中,調(diào)色板(Palette)是一種用于存儲和管理顏色映射的機(jī)制。調(diào)色板通常與圖像的索引顏色模式一起使用,這意味著圖像的每個像素值不直接表示顏色,而是作為索引來查找調(diào)色板中的實際顏色。
以下是有關(guān)調(diào)色板的一些重要概念和說明:
索引顏色模式:
調(diào)色板的組成:
使用調(diào)色板的圖像格式:
圖像的調(diào)色板屬性:
image.getpalette()
方法可以獲取圖像的調(diào)色板,而
image.putpalette()
方法可以設(shè)置調(diào)色板。
以下是一個簡單的示例,演示如何使用PIL中的調(diào)色板:
這個例子創(chuàng)建了一個調(diào)色板,然后使用索引顏色模式創(chuàng)建了一個8x8的圖像,并通過設(shè)置像素值(索引)來使用調(diào)色板中的顏色。
使用info屬性可以為一張圖片添加一些輔助信息。這個是字典對象。加載和保存圖像文件時,多少信息需要處理取決于文件格式。
屬性info的使用如下:
對于將多個輸入像素映射為一個輸出像素的幾何操作,PIL提供了四個不同的采樣濾波器。
Image模塊中的方法 resize() 和 thumbnail()用到了濾波器。
方法resize() 的使用如下:
對參數(shù)filter不賦值的話,方法resize()默認(rèn)使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實現(xiàn):
直接讀取圖片
save方法用于保存圖像,當(dāng)不指定文件格式時,它會以默認(rèn)的圖片格式來存儲;如果指定圖片格式,則會以指定的格式存儲圖片,語法如下:
注意: 并非所有的圖片格式都可以用 save() 方法轉(zhuǎn)換完成,比如將 PNG 格式的圖片保存為 JPG 格式,如果直接使用 save() 方法就會出現(xiàn)錯誤,引發(fā)錯誤的原因是由于 PNG 和 JPG 圖像模式不一致導(dǎo)致的。其中 PNG 是四通道 RGBA 模式,即紅色、綠色、藍(lán)色、Alpha 透明色;JPG 是三通道 RGB 模式。因此要想實現(xiàn)圖片格式的轉(zhuǎn)換,就要將 PNG 轉(zhuǎn)變?yōu)槿ǖ?RGB 模式。
Image 類提供的 convert() 方法可以實現(xiàn)圖像模式的轉(zhuǎn)換。該函數(shù)提供了多個參數(shù),比如 mode、matrix、dither 等,其中最關(guān)鍵的參數(shù)是 mode,其余參數(shù)無須關(guān)心
語法:
在圖像處理過程中經(jīng)常會遇到縮小或放大圖像的情況,Image 類提供的 resize() 方法能夠?qū)崿F(xiàn)任意縮小和放大圖像
語法:
圖像(指數(shù)字圖像)由許多像素點(diǎn)組成,像素是組成圖像的基本單位,而每一個像素點(diǎn)又可以使用不同的顏色,最終呈現(xiàn)出了絢麗多彩的圖像 ,而圖像的分離與合并,指的就是圖像顏色的分離和合并
示例:
Image 類提供的 merge() 方法可以實現(xiàn)圖像的合并操作。注意,圖像合并,可以是單個圖像合并,也可以合并兩個以上的圖像
示例:
Image 類也提供了 blend() 方法來混合 RGBA 模式的圖片(PNG 格式)
語法:
Image 類提供的 crop() 函數(shù)允許我們以矩形區(qū)域的方式對原圖像進(jìn)行裁剪
語法:
box 是一個有四個數(shù)字的元組參數(shù) (x_左上,y_左下,x1_右上,y1_右下),分別表示被裁剪矩形區(qū)域的左上角 x、y 坐標(biāo)和右下角 x,y 坐標(biāo)。默認(rèn) (0,0) 表示坐標(biāo)原點(diǎn),寬度的方向為 x 軸,高度的方向為 y 軸,每個像素點(diǎn)代表一個單位
注意:源文件的文件格式。如果是由PIL創(chuàng)建的空圖像,則其文件格式為None,即?im.format ? string or None
示例代碼如下:
代碼如下:
原圖圖片效果展示:
灰度化圖片效果展示:
二值化圖片效果展示:
代碼如下:
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實現(xiàn)對象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動態(tài)代理的對比分析
閱讀Win11筆記本“自動管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)