Python 去雾图像处理代码示例:使用 PyTorch 模型进行去雾
这段代码展示了一个使用 PyTorch 模型进行图像去雾处理的简单示例。
def dehaze_image(image_path):
data_hazy = Image.open(image_path)
data_hazy = (np.asarray(data_hazy)/255.0)
data_hazy = torch.from_numpy(data_hazy).float()
data_hazy = data_hazy.permute(2,0,1)
data_hazy = data_hazy.cuda().unsqueeze(0)
dehaze_net = net.dehaze_net().cuda()
dehaze_net.load_state_dict(torch.load('snapshots/dehazer.pth'))
clean_image = dehaze_net(data_hazy)
torchvision.utils.save_image(torch.cat((data_hazy, clean_image),0), 'F:/Pycharm/VD-end/images/' + image_path.split('/')[-1])
if __name__ == '__main__':
test_list = glob.glob('F:/Pycharm/VD-foggy/images/train/*')
for image in test_list:
dehaze_image(image)
print(image, 'done!')
代码解释:
-
图像读取与预处理:
Image.open(image_path):读取指定路径的图像文件。np.asarray(data_hazy)/255.0:将图像数据转换为 NumPy 数组,并将其归一化到 0 到 1 之间。torch.from_numpy(data_hazy).float():将 NumPy 数组转换为 PyTorch 张量,并设置为浮点类型。data_hazy.permute(2,0,1):对张量进行维度变换,使其符合 PyTorch 模型的输入要求。data_hazy.cuda().unsqueeze(0):将张量移动到 GPU 上,并添加一个额外的维度,以便与模型的批量处理功能兼容。
-
加载去雾模型:
dehaze_net = net.dehaze_net().cuda():创建并加载去雾模型到 GPU 上。dehaze_net.load_state_dict(torch.load('snapshots/dehazer.pth')):加载预训练模型参数。
-
进行去雾处理:
clean_image = dehaze_net(data_hazy):使用模型对输入图像进行去雾处理,并获取处理后的图像。
-
保存处理结果:
torchvision.utils.save_image(torch.cat((data_hazy, clean_image),0), 'F:/Pycharm/VD-end/images/' + image_path.split('/')[-1]):将原始图像和处理后的图像拼接在一起,并保存到指定的路径中。
-
循环处理图像列表:
test_list = glob.glob('F:/Pycharm/VD-foggy/images/train/*'):获取指定路径下的所有图像文件路径。- 使用循环遍历图像列表,对每个图像执行上述步骤,完成去雾处理。
这段代码演示了一个简单的图像去雾处理流程,通过使用预训练模型,可以方便地进行图像去雾处理。
原文地址: https://www.cveoy.top/t/topic/bk3o 著作权归作者所有。请勿转载和采集!