昨天在复现模型的时候发现test的结果图都是黑色的,输出像素发现白色是1,需要将白的像素乘以255,然后再输出,自己写的脚本如下(为了加快速度,用gpu转换,但是感觉速度还是一般)
python
import os
from PIL import Image
import torch
import torchvision.transforms as transforms
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")
def process_images_in_folder(input_folder, output_folder):
# 确保输出文件夹存在,如果不存在则创建
if not os.path.exists(output_folder):
os.makedirs(output_folder)
image_files= [f for f in os.listdir(input_folder) if os.path.isfile(os.path.join(input_folder, f)) and any(f.endswith(extension) for extension in ['.jpg', '.jpeg', '.png', '.bmp'])]
total_images = len(image_files)
# 遍历输入文件夹中的所有文件
for idx,filename in enumerate(image_files,1):
# 拼接输入和输出文件的完整路径
input_image_path = os.path.join(input_folder, filename)
output_image_path = os.path.join(output_folder, filename)
# 检查文件是否为图像文件
# 对图像应用相同的处理逻辑
modify_pixel(input_image_path, output_image_path)
print(f'Processed {idx}/{total_images} images')
def modify_pixel(input_image_path,output_image_path ):
img=Image.open(os.path.join(input_image_path))
img_tensor=transforms.ToTensor()(img).unsqueeze(0).to(device)
# 获取图像尺寸
width, height = img.size
# 循环遍历每个像素,并根据像素值做相应处理
for x in range(width):
for y in range(height):
# 获取原始像素值
r = img.getpixel((x, y))
# 如果像素值为1,则将像素值设为255(白色)
r=255*r
# 将处理后的像素值设置到新图像中
img.putpixel((x, y), (r))
# 保存处理后的图像
img.save(output_image_path)
# 调用函数处理图像
input_folder="/root/autodl-tmp/SINet-V2-main/res/SINet_V2/COD10K"
output_folder="/root/autodl-tmp/SINet-V2-main/res/SINet-V2-White/COD10K"
process_images_in_folder(input_folder,output_folder)
自己更改一下输入和输出的文件夹名称就可以,可以实时查看处理的进度。