picture_二值化.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import os
  2. from PIL import Image
  3. def convert_images_to_binary(input_folder, output_folder, threshold=128):
  4. """
  5. 遍历输入文件夹中的所有图片,将它们转换为二值化图像,并保存到输出文件夹。
  6. :param input_folder: 输入文件夹路径
  7. :param output_folder: 输出文件夹路径
  8. :param threshold: 二值化阈值,默认是128
  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).convert("L")
  21. # 应用阈值化
  22. binary_image = image.point(lambda p: 1 if p > threshold else 0)
  23. # 保存二值化图像
  24. binary_image.save(output_path)
  25. print(f"成功处理: {filename}")
  26. except Exception as e:
  27. print(f"处理文件 {filename} 时出错: {e}")
  28. # 输入和输出文件夹路径
  29. input_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\train\output1" # 替换为你的输入文件夹路径
  30. output_folder = r"E:\road_data\MassRoad_DeepGlobe_CHN6-CUG\seg\train\output" # 替换为你的输出文件夹路径
  31. # 调用函数处理文件夹中的图片
  32. convert_images_to_binary(input_folder, output_folder, threshold=128)