pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等

图像增广

import torch
import matplotlib.pyplot as plt
from torch.utils.data import Dataset, DataLoader
import torchvision
from PIL import Image
# 获取图像
img = Image.open(r'D:\pyPro\hhandwritten_web\static\images\bg.jpg')
plt.imshow(img)

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第1张图片

# 定义增广函数
def show_img(img,  num_rows, num_cols, scale=2):
    figsize = (num_cols * scale, num_rows * scale)
    _, axes = plt.subplots(num_rows,num_cols, figsize=figsize)
    for i in range(0,num_rows):
        for j in range(0,num_cols):
            axes[i][j].imshow(img[i * num_rows + num_cols])
            axes[i][j].axes.get_xaxis().set_visible(False)
            axes[i][j].axes.get_yaxis().set_visible(False)
def apply(img, aug, rows = 2, cols = 4, scale = 1.5):
    Y = [aug(img) for _ in range(0,rows*cols)]
    show_img(Y, rows, cols, scale)
  • 水平翻转
# 采用默认的行列
apply(img, torchvision.transforms.RandomHorizontalFlip())

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第2张图片

  • 垂直翻转
apply(img, torchvision.transforms.RandomVerticalFlip())

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第3张图片

  • 裁剪
# 我们每次随机裁剪出⼀块⾯积为原⾯积0.1 - 1的区域,且该区域的宽和⾼之⽐随机取⾃0.5 - 2,然后再将该区域的宽和⾼分别缩放到200像素。
shape_aug = torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2))
apply(img, shape_aug)

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第4张图片

  • 颜色
#设置如何随机变化图像的亮度( brightness )、对⽐度( contrast )、饱和度( saturation )和⾊调( hue )。
apply(img, torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5))

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第5张图片

  • 叠加多个变化
mutil_aug = torchvision.transforms.Compose(
    [torchvision.transforms.RandomResizedCrop((600,1000), scale= (0.1, 1), ratio=(0.5, 2)),
    torchvision.transforms.ColorJitter(brightness=0.5, hue=0.5,contrast=0.5, saturation=0.5)]
)
apply(img,mutil_aug)

pytorch 图像增广的操作,裁剪,翻转,颜色,亮度等_第6张图片

你可能感兴趣的:(pytorch,学习,计算机视觉,图像识别,pytorch)