2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 调整亮度 对比度 饱和度和色相

调整亮度 对比度 饱和度和色相

时间:2020-02-20 02:21:59

相关推荐

调整亮度 对比度 饱和度和色相

调整亮度、对比度、饱和度和色相 调整亮度、对比度、饱和度和色相 调整亮度、对比度、饱和度和色相

补充:transform.invert 预处理逆操作

from PIL import Imagefrom torchvision import transformsimport torchimport numpy as npdef transform_invert(img_, transform_train):"""将data 进行反transfrom操作:param img_: tensor:param transform_train: torchvision.transforms:return: PIL image"""if 'Normalize' in str(transform_train):# 分析transforms里的Normalizenorm_transform = list(filter(lambda x: isinstance(x, transforms.Normalize), transform_train.transforms))mean = torch.tensor(norm_transform[0].mean, dtype=img_.dtype, device=img_.device)std = torch.tensor(norm_transform[0].std, dtype=img_.dtype, device=img_.device)img_.mul_(std[:, None, None]).add_(mean[:, None, None]) # 广播三个维度 乘标准差 加均值img_ = img_.transpose(0, 2).transpose(0, 1) # C*H*W --> H*W*C# 如果有ToTensor,那么之前数值就会被压缩至0-1之间。现在需要反变换回来,也就是乘255if 'ToTensor' in str(transform_train):img_ = np.array(img_) * 255# 先将np的元素转换为uint8数据类型,然后转换为PIL.Image类型if img_.shape[2] == 3: # 若通道数为3 需要转为RGB类型img_ = Image.fromarray(img_.astype('uint8')).convert('RGB')elif img_.shape[2] == 1: # 若通道数为1 需要压缩张量的维度至2Dimg_ = Image.fromarray(img_.astype('uint8').squeeze())else:raise Exception("Invalid img shape, expected 1 or 3 in axis 2, but got {}!".format(img_.shape[2]))return img_if __name__ == '__main__':img = Image.open(r"./test.jpg").convert('RGB')img_transform = pose([transforms.ToTensor()])img_tensor = img_transform(img)# img_tensor.unsqueeze_(dim=0) # C*H*W to B*C*H*Wprint(img_tensor)print(img_tensor.shape)img = transform_invert(img_tensor, img_transform) # input: shape=[c h w]img.show()

调整亮度、对比度、饱和度和色相:ColorJitter

功能:调整亮度、对比度、饱和度和色相

主要参数说明:

brightness:亮度调整因子

当为a时,从[max(0, 1-a), 1 +a]中随机选择

当为(a, b)时,从[a, b]中contrast:对比度参数,同brightnesssaturation:饱和度参数,同brightnesshue:色相参数,当为a时,从[-a, a]中选择参数,注:0<= a <= 0.5

原图

1.亮度调整

from PIL import Imagefrom torchvision import transformsfrom utils import transform_invertif __name__ == '__main__':# 1.读取图像img = Image.open(r"./cat.png").convert('RGB')# 2.确定预处理方式img_transform = pose([## transforms.Resize((300,300)), # 重置大小为300*300transforms.ColorJitter(brightness=0.5), # 亮度transforms.ToTensor() # 转Tensor型变量])# 3.进行预处理img_tensor = img_transform(img)# 4.逆Transform变换img = transform_invert(img_tensor, img_transform) # input: shape=[c h w]# 5.进行预处理效果展示img.show()

2. 调整对比度

from PIL import Imagefrom torchvision import transformsfrom utils import transform_invertif __name__ == '__main__':# 1.读取图像img = Image.open(r"./cat.png").convert('RGB')# 2.确定预处理方式img_transform = pose([## transforms.Resize((300,300)), # 重置大小为300*300transforms.ColorJitter(contrast=0.1), # 对比度transforms.ToTensor() # 转Tensor型变量])# 3.进行预处理img_tensor = img_transform(img)# 4.逆Transform变换img = transform_invert(img_tensor, img_transform) # input: shape=[c h w]# 5.进行预处理效果展示img.show()

3.调整饱和度

from PIL import Imagefrom torchvision import transformsfrom utils import transform_invertif __name__ == '__main__':# 1.读取图像img = Image.open(r"./cat.png").convert('RGB')# 2.确定预处理方式img_transform = pose([## transforms.Resize((300,300)), # 重置大小为300*300transforms.ColorJitter(saturation=0.1), # 饱和度transforms.ToTensor() # 转Tensor型变量])# 3.进行预处理img_tensor = img_transform(img)# 4.逆Transform变换img = transform_invert(img_tensor, img_transform) # input: shape=[c h w]# 5.进行预处理效果展示img.show()

4.调整色相

from PIL import Imagefrom torchvision import transformsfrom utils import transform_invertif __name__ == '__main__':# 1.读取图像img = Image.open(r"./cat.png").convert('RGB')# 2.确定预处理方式img_transform = pose([## transforms.Resize((300,300)), # 重置大小为300*300transforms.ColorJitter(hue=0.8), # 色相transforms.ToTensor() # 转Tensor型变量])# 3.进行预处理img_tensor = img_transform(img)# 4.逆Transform变换img = transform_invert(img_tensor, img_transform) # input: shape=[c h w]# 5.进行预处理效果展示img.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。