PIL圖像與數(shù)組之間轉(zhuǎn)換的使用示例
getpixel
如果想對圖像進行細致地處理,那么操作像素是必不可少的一步。在Image類中,通過getpixel可以得到圖像在某個坐標位置處的像素值,示例如下
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)文章
Python3中l(wèi)ambda表達式與函數(shù)式編程講解
今天小編就為大家分享一篇關(guān)于Python3中l(wèi)ambda表達式與函數(shù)式編程講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01pyqt6實現(xiàn)關(guān)閉窗口前彈出確認框的示例代碼
本文主要介紹了pyqt6實現(xiàn)關(guān)閉窗口前彈出確認框的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-02-02python 按鈕點擊關(guān)閉窗口的實現(xiàn)
這篇文章主要介紹了python 按鈕點擊關(guān)閉窗口的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Pytorch通過保存為ONNX模型轉(zhuǎn)TensorRT5的實現(xiàn)
這篇文章主要介紹了Pytorch通過保存為ONNX模型轉(zhuǎn)TensorRT5的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05