picture_3to1.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import os
  2. from PIL import Image
  3. def convert_images_to_single_channel(input_folder, output_folder, mode="L"):
  4. """
  5. 将文件夹中的所有图片转换为单通道并保存到另一个文件夹。
  6. :param input_folder: 输入文件夹路径
  7. :param output_folder: 输出文件夹路径
  8. :param mode: 转换模式,默认 "L" 表示灰度。可选 "R", "G", "B" 表示提取单通道。
  9. """
  10. # 确保输出文件夹存在
  11. os.makedirs(output_folder, exist_ok=True)
  12. # 遍历输入文件夹中的所有文件
  13. for filename in os.listdir(input_folder):
  14. # 检查是否为图片文件
  15. if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')):
  16. input_path = os.path.join(input_folder, filename)
  17. output_path = os.path.join(output_folder, filename)
  18. try:
  19. # 打开图片
  20. image = Image.open(input_path)
  21. if mode == "L": # 灰度模式
  22. converted_image = image.convert("L")
  23. elif mode in ["R", "G", "B"]: # 提取单通道
  24. # 分离通道
  25. channels = image.split()
  26. channel_map = {"R": 0, "G": 1, "B": 2}
  27. converted_image = channels[channel_map[mode]]
  28. else:
  29. raise ValueError(f"Unsupported mode: {mode}")
  30. # 保存转换后的图片
  31. converted_image.save(output_path)
  32. print(f"成功处理: {filename}")
  33. except Exception as e:
  34. print(f"处理文件 {filename} 时出错: {e}")
  35. # 输入和输出文件夹路径
  36. input_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\val\output" # 替换为你的输入文件夹路径
  37. output_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\val\output1" # 替换为你的输出文件夹路径
  38. # 转换为灰度图像
  39. convert_images_to_single_channel(input_folder, output_folder, mode="L")