1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import os
- from PIL import Image
- def convert_images_to_single_channel(input_folder, output_folder, mode="L"):
- """
- 将文件夹中的所有图片转换为单通道并保存到另一个文件夹。
-
- :param input_folder: 输入文件夹路径
- :param output_folder: 输出文件夹路径
- :param mode: 转换模式,默认 "L" 表示灰度。可选 "R", "G", "B" 表示提取单通道。
- """
- # 确保输出文件夹存在
- os.makedirs(output_folder, exist_ok=True)
-
- # 遍历输入文件夹中的所有文件
- for filename in os.listdir(input_folder):
- # 检查是否为图片文件
- if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')):
- input_path = os.path.join(input_folder, filename)
- output_path = os.path.join(output_folder, filename)
-
- try:
- # 打开图片
- image = Image.open(input_path)
-
- if mode == "L": # 灰度模式
- converted_image = image.convert("L")
- elif mode in ["R", "G", "B"]: # 提取单通道
- # 分离通道
- channels = image.split()
- channel_map = {"R": 0, "G": 1, "B": 2}
- converted_image = channels[channel_map[mode]]
- else:
- raise ValueError(f"Unsupported mode: {mode}")
-
- # 保存转换后的图片
- converted_image.save(output_path)
- print(f"成功处理: {filename}")
- except Exception as e:
- print(f"处理文件 {filename} 时出错: {e}")
- # 输入和输出文件夹路径
- input_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\val\output" # 替换为你的输入文件夹路径
- output_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\val\output1" # 替换为你的输出文件夹路径
- # 转换为灰度图像
- convert_images_to_single_channel(input_folder, output_folder, mode="L")
|