torch 中各種圖像格式轉(zhuǎn)換的實現(xiàn)方法
更新時間:2019年12月26日 14:19:31 作者:core!
這篇文章主要介紹了torch 中各種圖像格式轉(zhuǎn)換的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
- PIL:使用python自帶圖像處理庫讀取出來的圖片格式
- numpy:使用python-opencv庫讀取出來的圖片格式
- tensor:pytorch中訓(xùn)練時所采取的向量格式(當(dāng)然也可以說圖片)
PIL與Tensor相互轉(zhuǎn)換
import torch
from PIL import Image
import matplotlib.pyplot as plt
# loader使用torchvision中自帶的transforms函數(shù)
loader = transforms.Compose([
transforms.ToTensor()])
unloader = transforms.ToPILImage()
# 輸入圖片地址
# 返回tensor變量
def image_loader(image_name):
image = Image.open(image_name).convert('RGB')
image = loader(image).unsqueeze(0)
return image.to(device, torch.float)
# 輸入PIL格式圖片
# 返回tensor變量
def PIL_to_tensor(image):
image = loader(image).unsqueeze(0)
return image.to(device, torch.float)
# 輸入tensor變量
# 輸出PIL格式圖片
def tensor_to_PIL(tensor):
image = tensor.cpu().clone()
image = image.squeeze(0)
image = unloader(image)
return image
#直接展示tensor格式圖片
def imshow(tensor, title=None):
image = tensor.cpu().clone() # we clone the tensor to not do changes on it
image = image.squeeze(0) # remove the fake batch dimension
image = unloader(image)
plt.imshow(image)
if title is not None:
plt.title(title)
plt.pause(0.001) # pause a bit so that plots are updated
#直接保存tensor格式圖片
def save_image(tensor, **para):
dir = 'results'
image = tensor.cpu().clone() # we clone the tensor to not do changes on it
image = image.squeeze(0) # remove the fake batch dimension
image = unloader(image)
if not osp.exists(dir):
os.makedirs(dir)
image.save('results_{}/s{}-c{}-l{}-e{}-sl{:4f}-cl{:4f}.jpg'
.format(num, para['style_weight'], para['content_weight'], para['lr'], para['epoch'],
para['style_loss'], para['content_loss']))
numpy 與 tensor相互轉(zhuǎn)換
import cv2
import torch
import matplotlib.pyplot as plt
def toTensor(img):
assert type(img) == np.ndarray,'the img type is {}, but ndarry expected'.format(type(img))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = torch.from_numpy(img.transpose((2, 0, 1)))
return img.float().div(255).unsqueeze(0) # 255也可以改為256
def tensor_to_np(tensor):
img = tensor.mul(255).byte()
img = img.cpu().numpy().squeeze(0).transpose((1, 2, 0))
return img
def show_from_cv(img, title=None):
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.figure()
plt.imshow(img)
if title is not None:
plt.title(title)
plt.pause(0.001)
def show_from_tensor(tensor, title=None):
img = tensor.clone()
img = tensor_to_np(img)
plt.figure()
plt.imshow(img)
if title is not None:
plt.title(title)
plt.pause(0.001)
N張圖片一起轉(zhuǎn)換.
# 將 N x H x W X C 的numpy格式圖片轉(zhuǎn)化為相應(yīng)的tensor格式 def toTensor(img): img = torch.from_numpy(img.transpose((0, 3, 1, 2))) return img.float().div(255).unsqueeze(0)
參考:http://www.dhdzp.com/article/177291.htm
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中用startswith()函數(shù)判斷字符串開頭的教程
這篇文章主要介紹了Python中用startswith()函數(shù)判斷字符串開頭的教程,startswith()函數(shù)的使用是Python學(xué)習(xí)中的基礎(chǔ)知識,本文列舉了一些不同情況下的使用結(jié)果,需要的朋友可以參考下2015-04-04
Python使用函數(shù)默認值實現(xiàn)函數(shù)靜態(tài)變量的方法
這篇文章主要介紹了Python使用函數(shù)默認值實現(xiàn)函數(shù)靜態(tài)變量的方法,是很實用的功能,需要的朋友可以參考下2014-08-08
Python實現(xiàn)接口下載json文件并指定文件名稱
在 Web 開發(fā)中,提供文件下載功能是一種常見的需求,尤其是當(dāng)涉及到導(dǎo)出數(shù)據(jù)為 JSON 格式時,為了確保文件名的自定義以及避免亂碼問題,開發(fā)者需要采取一些特定的措施,本文介紹了Python實現(xiàn)接口下載json文件并指定文件名稱,需要的朋友可以參考下2024-10-10

