参考链接: torchvision.transforms
参考链接: 透视变换原理实例代码详解
参考链接: 图像几何变换之透视变换
1 2 3 4 5 6 7 8 9 10 11 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") img.show() plt.imshow(img) plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") to_tensor = transforms.ToTensor() img_t = to_tensor(img) # 注意:这里会自动调整通道维度的位置,即通道维度放到最开头 print('img_t.shape:',img_t.shape) # img_t.shape: torch.Size([3, 374, 500]) print('type(img_t):',type(img_t)) # type(img_t): <class 'torch.Tensor'> print(img_t.shape, img_t.dtype) # torch.Size([3, 374, 500]) torch.float32 plt.imshow(img_t.permute(1, 2, 0)) # 需要将通道所对应的维度放到最后 plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") trans4cxq = transforms.Compose([ transforms.CenterCrop((374,400)), transforms.RandomRotation([-180,180]), transforms.ToTensor(), ]) img_tr = trans4cxq(img) plt.imshow(img_tr.permute(1, 2, 0)) # 需要将通道所对应的维度放到最后 plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") scale = 5.0 img = Image.open("poker.png") img_func = transforms.functional.perspective( img, [[63,72], [162,30], [270,144], [151,218]], [[10*scale,20*scale], [30*scale,20*scale], [30*scale,40*scale], [10*scale,40*scale]], interpolation=3) img_func.show() plt.imshow(img_func) plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") img = Image.open("KJ.jpg") img_func = transforms.functional.rotate( img, 45, resample=False, expand=True, center=None) img_func.show() plt.imshow(img_func) plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | from torchvision import transforms from matplotlib import pyplot as plt import numpy as np import torch from PIL import Image img = Image.open("KJ.jpg") # img.show() # plt.imshow(img) # plt.show() # to_tensor = transforms.ToTensor() # img_t = to_tensor(img) # 注意:这里会自动调整通道维度的位置,即通道维度放到最开头 # print('img_t.shape:',img_t.shape) # img_t.shape: torch.Size([3, 374, 500]) # print('type(img_t):',type(img_t)) # type(img_t): <class 'torch.Tensor'> # print(img_t.shape, img_t.dtype) # torch.Size([3, 374, 500]) torch.float32 # plt.imshow(img_t.permute(1, 2, 0)) # 需要将通道所对应的维度放到最后 # plt.show() # trans4cxq = transforms.Compose([ # transforms.CenterCrop((374,400)), # transforms.RandomRotation([-180,180]), # transforms.ToTensor(), # ]) # img_tr = trans4cxq(img) # plt.imshow(img_tr.permute(1, 2, 0)) # 需要将通道所对应的维度放到最后 # plt.show() # scale = 5.0 # img = Image.open("poker.png") # img_func = transforms.functional.perspective( # img, # [[63,72], [162,30], [270,144], [151,218]], # [[10*scale,20*scale], [30*scale,20*scale], [30*scale,40*scale], [10*scale,40*scale]], # interpolation=3) # img_func.show() # plt.imshow(img_func) # plt.show() # scale = 100.0 # img = Image.open("cxq.jpg") # img_func = transforms.functional.perspective( # img, # [[3097,3015], [1649,3405], [591,1393], [1761,1477]], # [[10*scale,20*scale], [30*scale,20*scale], [30*scale,40*scale], [10*scale,40*scale]], # interpolation=3) # img_func.show() img = Image.open("KJ.jpg") img_func = transforms.functional.rotate( img, 45, resample=False, expand=True, center=None) img_func.show() plt.imshow(img_func) plt.show() |