clean = load_img(self.clean_filenames[tar_index]) noisy = load_img(self.noisy_filenames[tar_index]) clean_filename = os.path.split(self.clean_filenames[tar_index])[-1] noisy_filename = os.path.split(self.noisy_filenames[tar_index])[-1]
时间: 2023-03-06 15:58:07 浏览: 136
我已成功加载clean_filename和noisy_filename,分别为:clean_filename:'{clean_filename}',noisy_filename:'{noisy_filename}'。
相关问题
class TestDataset(Dataset): def __init__(self, folder_path, hr, lr): super(TestDataset, self).__init__() self.folder_path = folder_path self.hr = hr self.lr = lr self.hr_path = os.path.join(self.folder_path, self.hr) self.lr_path = os.path.join(self.folder_path, self.lr) self.hr_list = [entry.name for entry in os.scandir(self.hr_path) if entry.is_file()] self.lr_list = [entry.name for entry in os.scandir(self.lr_path) if entry.is_file()] self.filenames = self.hr_list self.transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) def __getitem__(self, index): self.hr_name = self.hr_list[index] self.lr_name = self.lr_list[index] self.hr_item_path = os.path.join(self.hr_path, self.hr_name) self.lr_item_path = os.path.join(self.lr_path, self.lr_name) hr_img = Image.open(self.hr_item_path).convert("RGB") lr_img = Image.open(self.lr_item_path).convert("RGB") hr_img = self.transform(hr_img) lr_img = self.transform(lr_img) return lr_img, hr_img def __len__(self): return len(self.filenames)
这是一个 Python 代码段,用于定义一个名为 TestDataset 的数据集类。该类接受三个参数:文件夹路径、高分辨率图像文件夹名称和低分辨率图像文件夹名称。它通过扫描指定文件夹中的文件来获取高分辨率和低分辨率图像的文件名列表,并将其存储在 hr_list 和 lr_list 中。在 __getitem__ 方法中,它会打开指定文件夹中的图像文件,并将其转换为张量,并返回低分辨率和高分辨率图像的张量。在 __len__ 方法中,它返回文件名列表的长度。
def __getitem__(self, index): if self.split=='train': vis_path = self.filepath_vis[index] ir_path = self.filepath_ir[index] label_path = self.filepath_label[index] image_vis = np.array(Image.open(vis_path)) image_inf = cv2.imread(ir_path, 0) label = np.array(Image.open(label_path)) image_vis = ( np.asarray(Image.fromarray(image_vis), dtype=np.float32).transpose( (2, 0, 1) ) / 255.0 ) image_ir = np.asarray(Image.fromarray(image_inf), dtype=np.float32) / 255.0 image_ir = np.expand_dims(image_ir, axis=0) label = np.asarray(Image.fromarray(label), dtype=np.int64) name = self.filenames_vis[index] return ( torch.tensor(image_vis), torch.tensor(image_ir), torch.tensor(label), name, ) elif self.split=='val': vis_path = self.filepath_vis[index] ir_path = self.filepath_ir[index] image_vis = np.array(Image.open(vis_path)) image_inf = cv2.imread(ir_path, 0) image_vis = ( np.asarray(Image.fromarray(image_vis), dtype=np.float32).transpose( (2, 0, 1) ) / 255.0 ) image_ir = np.asarray(Image.fromarray(image_inf), dtype=np.float32) / 255.0 image_ir = np.expand_dims(image_ir, axis=0) name = self.filenames_vis[index] return ( torch.tensor(image_vis), torch.tensor(image_ir), name, )
这段代码定义了一个自定义数据集类(可能是用于图像分割任务),其中包含了getitem方法用于获取数据。
在getitem方法中,根据数据集的split属性判断是训练集还是验证集。如果是训练集,首先获取对应索引的可见光图像路径(vis_path)、红外图像路径(ir_path)和标签路径(label_path)。然后,使用PIL库的Image.open函数读取可见光图像和标签图像,并使用cv2.imread函数读取红外图像(以灰度图像形式)。接下来,对可见光图像和红外图像进行预处理:将可见光图像转为numpy数组,并将通道维度转置为(2, 0, 1),然后除以255.0进行归一化;将红外图像转为numpy数组,并除以255.0进行归一化,再使用np.expand_dims函数在通道维度上添加一个维度。最后,将标签图像转为numpy数组,并将数据类型设置为int64。
如果是验证集,只获取可见光图像路径(vis_path)和红外图像路径(ir_path),并进行和训练集相同的预处理操作。
最后,根据数据集的split属性,返回不同的数据组合。如果是训练集,返回可见光图像、红外图像、标签图像和名称;如果是验证集,返回可见光图像、红外图像和名称。
这个数据集类用于加载图像数据,并返回用于训练或验证的数据组合。
阅读全文
相关推荐












