PIL圖像與數(shù)組之間轉(zhuǎn)換的使用示例
getpixel
如果想對圖像進行細致地處理,那么操作像素是必不可少的一步。在Image類中,通過getpixel可以得到圖像在某個坐標(biāo)位置處的像素值,示例如下
from PIL import Image path = 'lena.jpg' img = Image.open(path) # 讀取 img.getpixel((15,15)) # (230, 130, 104)
其含義是,lena圖的 ( 15 , 15 ) (15,15) (15,15)這個位置處的RGB值為 ( 230 , 130 , 104 ) (230, 130, 104) (230,130,104)。如果想將所有像素,輸出到一個數(shù)組中,可以對像素點進行遍歷
import numpy as np
w, h = img.size
mat = np.zeros([w,h,3])
for y in range(h):
for x in range(w):
mat[y,x,:] = img.getpixel((x,y))
putpixel
與getpixel相對偶的函數(shù)是putpixel,其功能是寫入某個像素點,通過如下代碼,可以將mat中的每個像素點,填充到一個新的圖像中
pImg = Image.new("RGB", size=(w, h))
for y in range(h):
for x in range(w):
pImg.putpixel((x,y), tuple(mat[y,x,:].astype(int)))
【putpixel】的輸入?yún)?shù)分別是像素位置和像素值。這個過程十分耗時,處理一張 512 × 512 512\times512 512×512的圖像,甚至需要消耗掉1秒的時間,所以非常不建議這么使用。
快速轉(zhuǎn)換
PIL和numpy都是非常著名的Python庫,對彼此的數(shù)據(jù)類型自然也了然于胸,提供了便捷的轉(zhuǎn)換函數(shù),示例如下
m1 = np.asarray(img) im1 = Image.fromarray(mat)
由此得到的m1與經(jīng)過單點迭代填充的mat,內(nèi)容完全相同。而經(jīng)過m1轉(zhuǎn)換得到的im1,圖像在保存之后,也與讀取得到的原圖沒有區(qū)別。

到此這篇關(guān)于PIL圖像與數(shù)組之間的轉(zhuǎn)換的使用示例的文章就介紹到這了,更多相關(guān)PIL圖像與數(shù)組轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)從wind導(dǎo)入數(shù)據(jù)
今天小編就為大家分享一篇python實現(xiàn)從wind導(dǎo)入數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python創(chuàng)建虛擬環(huán)境的3種方式
在Python開發(fā)中,主要有三種創(chuàng)建虛擬環(huán)境的方式,包括conda、pyenv+pyenv-virtualenv和venv,它們各有特點和適用場景,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-02-02
selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器
這篇文章主要介紹了selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
python中pivot()函數(shù)基礎(chǔ)知識點
在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python中pivot()函數(shù)基礎(chǔ)知識點內(nèi)容,對此有興趣的朋友們可以參考學(xué)習(xí)下。2021-01-01

