Pytorch視覺化(顯示圖片)及格式轉換
讀取RGB檔案:
- matplotlib
import matplotlib.image as mpimg # mpimg 用於讀取圖片
lena = mpimg.imread('lena.png')
- cv2
import cv2
# cv2.imread()介面讀影像,讀進來直接是BGR 格式資料格式在 0~255,通道格式為(W,H,C)
img_BGR = cv2.imread('D:/Desktop/lena.jpg')
rgb = cv2.cvtColor(rgb, cv2.COLOR_BGR2RGB) #轉成RGB
rgb = np.transpose(rgb, [2, 0, 1]) # 進行tensor操作時需要將維度放到前面
讀取HSI檔案:
- scipy
from scipy.io import loadmat
filenames_hyper = glob.glob(os.path.join(opt.data_path, 'NTIRE2020_Train_Spectral', '*.mat'))
for k in range(len(filenames_hyper)):
mat = loadmat(filenames_hyper[k])
hyper = np.float32(np.array(mat['cube']))
- h5py(有時候會出問題)
import h5py
filenames_hyper = glob.glob(os.path.join(opt.data_path, 'NTIRE2020_Train_Spectral', '*.mat'))
for k in range(len(filenames_hyper)):
mat = h5py.File(filenames_hyper[k], 'r')
在顯示圖片之前需要注意的幾個問題:
- 矩陣的shape:
一般情況下是[ 行數, 列數, 維數 ](如[ 482, 512, 3 ]),這樣顯示出來會感覺不自然,但確實就是這樣,RGB檔案讀入時一般也是這樣。使用ToPILImage函式時要注意,詳見Pytorch顯示一個Tensor型別的圖片資料; - 資料型別是0-1的float型,還是0-255的int型或者uint8型:
只要是浮點數,就會預設是0-1範圍內。
只要是整形,就會預設取值範圍是2-255。
下面會介紹Tensor和numpy如何進行資料型別的轉換; - 注意要操作的矩陣是Tensor型別還是numpy型別。
顯示Tensor/numpy的資料型別:
a = torch.Tensor(1,2,3)
print(a.dtype)
print(a.numpy().dtype)
結果:
- torch.float32
- float32
Tensor進行資料型別的轉換:
a = torch.randn(10, 20, 3)
a = a.long()/half()/int()...
# torch.long() 將tensor投射為long型別
# torch.half()將tensor投射為半精度浮點型別
# torch.int()將該tensor投射為int型別
# torch.double()將該tensor投射為double型別
# torch.float()將該tensor投射為float型別
# torch.char()將該tensor投射為char型別
# torch.byte()將該tensor投射為byte型別
# torch.short()將該tensor投射為short型別
# 好像沒有uint8
Numpy進行資料型別的轉換:
astype()函式
a = np.random.randint(0, 255, 300)
# 在0-255(包括0,不包括255)範圍內產生300個隨機整形,是一個行向量哦!
a = a.reshape(10,10,3)
a = a.astype(np.uint8)
# .float/.int/...
NumPy 支援比 Python 更多種類的數值型別。 下表顯示了 NumPy 中定義的不同標量資料型別。
序號 | 資料型別 | 及描述 |
---|---|---|
1. | bool | 儲存為一個位元組的布林值(真或假) |
2. | int | 預設整數,相當於 C 的long,通常為int32或int64 |
3. | int16 | 16 位整數(-32768 ~ 32767) |
4. | int32 | 32位整數(-32768 ~ 32767) |
5. | uint8 | 8 位無符號整數(0 ~ 255) |
6. | float16 | 半精度浮點:符號位,5 位指數,10 位尾數 |
6. | float32 | 單精度浮點:符號位,8 位指數,23 位尾數 |
7. | float64 | 雙精度浮點:符號位,11 位指數,52 位尾數 |
顯示圖片:
import numpy as np
a = abs(torch.randn(10,20,3))*100
plt.imshow(a) # 顯示圖片
plt.axis('off') # 不顯示座標軸
plt.show()
# 顯示單通道,也就是熱力圖,也就是說可以用它來顯示HSI.mat檔案
plt.imshow(a[:,:,0])
plt.imshow(a[:,:,0], cmap='Greys_r') #顯示單通道黑白圖
相關文章
- 圖片格式轉換,JPG圖片轉換成PDF
- 視訊音樂圖片格式轉換Permute 3
- pytorch模型結構視覺化,可顯示每層的尺寸PyTorch模型視覺化
- heic圖片轉換格式怎麼轉?
- 圖片格式怎麼轉換,如何轉換jpg
- 怎麼轉換圖片格式並壓縮圖片
- C++圖片格式轉換:BMP轉JPEGC++
- 圖片上傳顯示替換
- element上傳圖片元件使用方法|圖片回顯|格式轉換base64元件
- 教程:怎麼轉換heic格式圖片
- WidsMob ImageConvert for Mac 圖片格式轉換器Mac
- linux系統lcd顯示jpg格式圖片Linux
- 怎麼將bmp格式圖片轉換jpg格式的
- 圖片格式轉換器有什麼,怎麼無損轉換heic格式
- 如何將heic格式轉換成jpg圖片?
- 前端圖片canvas,file,blob,DataURL等格式轉換前端Canvas
- 批次HEIC格式圖片轉換工具 iMazing HEIC Converter
- 圖片轉化為視訊
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- 短視訊平臺原始碼,平臺顯示時間,時間格式的轉換原始碼
- 計算機視覺—圖片幾何變換(2)計算機視覺
- MNIST資料集詳解及視覺化處理(pytorch)視覺化PyTorch
- js圖片 轉換JS
- 如何在視訊中擷取到高清的畫面並轉換為圖片的格式
- Golang pprof 結果使用 graphviz 圖片化顯示Golang
- [BUG反饋]LINUX下圖示、圖片及驗證碼顯示不正確Linux
- 在PyTorch中使用tensorboard視覺化PyTorchORB視覺化
- Pytorch網路結構視覺化PyTorch視覺化
- 怎麼將heic轉為jpg格式,哪個圖片轉換器好用
- 多檔案斷點續傳,上傳視訊自動轉MP4和截圖,圖片格式轉換斷點
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- 前端 img標籤顯示 base64格式的 圖片前端
- SDWebImage在iOS12上WebP格式圖片不顯示問題WebiOS
- 圖片轉換文字appAPP
- 圖片怎麼轉換成PDF,圖片轉PDF教程
- 分割結果視覺化,把標籤mask輪廓顯示在原圖上視覺化
- 利用網路請求將網路圖片轉換成Bitmap格式
- PHP列印格式化顯示利器PHP