将彩色图像转换为灰度图像

问题描述

我正在使用宠物数据集。我想将这些图像转换为灰度,但我不知道如何通过互联网浏览,也没有找到很多有用的东西。如果有人能指出我正确的方向,那么我就可以弄清楚如何将其更改为单通道图像或灰度,那会很棒。

from fastai.vision.all import *
set_seed(333)
image_files = get_image_files(path).sorted().shuffle()
splitter = RandomSplitter(valid_pct=0.2,seed=42)
dblock = DataBlock(blocks    = (ImageBlock,CategoryBlock),get_y     = get_y,splitter  = splitter,item_tfms = Resize(224))
DataLoaders = dblock.DataLoaders(image_files,batch_size=9,shuffle_fn=lambda idxs: idxs)
batch = DataLoaders.train.one_batch()
images,labels = batch
show_image_batch((images,labels))

解决方法

您可以在 DataBlock 中指定图像的类型:ImageBlock(cls=PILImageBW

from fastai.vision.all import *
set_seed(333)
path = untar_data(URLs.PETS)/"images"
image_files = get_image_files(path)
splitter = RandomSplitter(valid_pct=0.2,seed=42)
dblock = DataBlock(blocks    = (ImageBlock(cls=PILImageBW),CategoryBlock),get_y     = lambda x: re.match(r'^(.*)_\d+.jpg$',x.name).groups()[0],splitter  = splitter,item_tfms = [Resize(224)],)

dataloaders = dblock.dataloaders(image_files,batch_size=9)
dataloaders.show_batch()

show_batch

或者,您可以将您喜欢的任何 transform 应用到您的数据加载器 after_batch。