实验需要,将RGB转化为gray,可以单独处理RGB数据,或者在训练时,数据准备阶段,利用transforms直接转化。
RGB转gray可以通过PIL或者CV2相应算法库进行转化。另一种选择是通过公式Y = 0.299 R + 0.587 G + 0.114 B.从RGB计算灰度(Y)通道 切片数组并转换为一个通道。
class Gray(object)
def __call__(self, tensor):
# TODO: make efficient
R = tensor[0]
G = tensor[1]
B = tensor[2]
tensor[0]=0.299*R+0.587*G+0.114*B
tensor = tensor[0]
tensor = tensor.view(1,w,h)
return tensor
注意PIL读取图片为RGB格式,cv2.imread读取图片为BGR格式。
数据准备阶段 transform转化
import torch
import torchvision
import torchvision.transforms as transforms
from PIL import Image
image_path = "/home/WuHF/whf/pytorch_code/dttNet/dataset/fusion_datasets/lytro-01-A.jpg"
image = Image.open(image_path)
input_transform = transforms.Compose([
transforms.Grayscale(num_output_channels=1), #这一句就是转为单通道灰度图像
transforms.ToTensor(),
])
image_tensor = input_transform(image)
<

这篇博客介绍了如何将RGB图像转换为灰度图像,包括在训练数据准备阶段使用PyTorch的transforms和PIL库,以及在单独处理图像时使用Numpy的方法。文章详细讲解了Grayscale转换、使用expand_dims和repeat函数来扩充单通道图像,并探讨了numpy的repeat函数和squeeze函数的用法。

1万+

被折叠的 条评论
为什么被折叠?



