Pytorch之ToPILImage()不輸出圖片問題及解決
Pytorch ToPILImage()不輸出圖片
先導(dǎo)torchvision包
from PIL import Image from torchvision.transforms import ToTensor,ToPILImage
定義轉(zhuǎn)換操作
img_to_tensor = ToTensor() # img -> tensor tensor_to_pil = ToPILImage() # tensor -> img
讀取圖片
img = Image.open('../test.jpg') # ‘' 引號內(nèi)為要讀取圖片的相對路徑把讀取的圖片轉(zhuǎn)換成tensor進(jìn)而對其操作,
unsqueeze(0)是在給轉(zhuǎn)換后的tensor加一個(gè)維度
input = img_to_tensor(img).unsqueeze(0) #torch.Size([1, 3, 960, 720])
對圖像進(jìn)行一個(gè)簡單的操作,此處用的3*3的kernel進(jìn)行銳化卷積
kernel = t.ones(3,3)/-9. kernel[1][1] = 1 conv = nn.Conv2d(1,1,(3,3),1,bias=False) #卷積 conv.weight.data = kernel.view(1,1,3,3) #權(quán)重
將圖片傳入卷積層,并輸出
out = conv(V(input)) tensor_to_pil(out.data.squeeze(0)).show()
注意,此處若不用.show()則輸出臺無顯示。
另附torchvision.transforms.ToTensor及torchvision.transforms.ToPILImage的轉(zhuǎn)換過程
torchvision.transforms.ToTensor
對于一個(gè)圖片img,調(diào)用ToTensor轉(zhuǎn)化成張量的形式,發(fā)生的不是將圖片的RGB三維信道矩陣變成tensor
圖片在內(nèi)存中以bytes的形式存儲,轉(zhuǎn)化過程的步驟是:
- img.tobytes() 將圖片轉(zhuǎn)化成內(nèi)存中的存儲格式
- torch.BytesStorage.frombuffer(img.tobytes() ) 將字節(jié)以流的形式輸入,轉(zhuǎn)化成一維的張量
- 對張量進(jìn)行reshape
- 對張量進(jìn)行permute(2,0,1)
- 將當(dāng)前張量的每個(gè)元素除以255
- 輸出張量
torchvision.transforms.ToPILImage
對于一個(gè)Tensor的轉(zhuǎn)化過程是:
- 將張量的每個(gè)元素乘上255
- 將張量的數(shù)據(jù)類型有FloatTensor轉(zhuǎn)化成Uint8
- 將張量轉(zhuǎn)化成numpy的ndarray類型
- 對ndarray對象做permute (1, 2, 0)的操作
- 利用Image下的fromarray函數(shù),將ndarray對象轉(zhuǎn)化成PILImage形式
- 輸出PILImage
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python基于pyecharts實(shí)現(xiàn)關(guān)聯(lián)圖繪制
這篇文章主要介紹了Python基于pyecharts實(shí)現(xiàn)關(guān)聯(lián)圖繪制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
tensorflow 利用expand_dims和squeeze擴(kuò)展和壓縮tensor維度方式
今天小編就為大家分享一篇tensorflow 利用expand_dims和squeeze擴(kuò)展和壓縮tensor維度方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python中交換兩個(gè)元素的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python中交換兩個(gè)元素的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Python數(shù)據(jù)處理numpy.median的實(shí)例講解
下面小編就為大家分享一篇Python數(shù)據(jù)處理numpy.median的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python實(shí)現(xiàn)無人機(jī)航拍圖片像素坐標(biāo)轉(zhuǎn)世界坐標(biāo)的示例代碼
已知相機(jī)參數(shù)在給定像素坐標(biāo)的前提下,求世界坐標(biāo),大部分通過AI來實(shí)現(xiàn),本文給大家分享實(shí)現(xiàn)腳本,感興趣的朋友跟隨小編一起看看吧2024-06-06
pycharm: 恢復(fù)(reset) 誤刪文件的方法
今天小編就為大家分享一篇pycharm: 恢復(fù)(reset) 誤刪文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python3實(shí)現(xiàn)的判斷環(huán)形鏈表算法示例
這篇文章主要介紹了Python3實(shí)現(xiàn)的判斷環(huán)形鏈表算法,涉及Python針對環(huán)形鏈表的遍歷、判斷相關(guān)操作技巧,需要的朋友可以參考下2019-03-03

