一、导入库
pip install opencv-python
二、灰度化处理过程
说明:无论前面的图像文件夹中的图像后缀是否统一,均可使用灰度化处理程序。
# 检查文件是否为图像文件(这里以.jpg、.jpeg、.png等为例)
if item.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".bmp", ".gif")):
因为上述这部分代码已经包含了常规图像的后缀判断。但是,还是强烈推荐预先处理好图像后缀后再进行图像的其他预处理。统一后缀可以参考:统一图像后缀。
import os
import cv2
def grayscale_folder_images(input_folder, output_folder):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历输入文件夹中的所有文件和文件夹
for item in os.listdir(input_folder):
input_path = os.path.join(input_folder, item)
# 跳过.ipynb_checkpoints文件夹
if item == ".ipynb_checkpoints":
continue
# 如果是文件夹,则递归处理
if os.path.isdir(input_path):
grayscale_folder_images(input_path, os.path.join(output_folder, item))
continue
output_path = os.path.join(output_folder, item)
# 检查文件是否为图像文件(这里以.jpg、.jpeg、.png等为例)
if item.lower().endswith((".png", ".jpg", ".jpeg", ".tiff", ".bmp", ".gif")):
# 读取图像
image = cv2.imread(input_path)
if image is not None:
# 将图像转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 保存灰度图像到输出文件夹
cv2.imwrite(output_path, gray_image)
print(f"Processed {item} to grayscale and saved to {output_path}")
else:
print(f"Failed to read image: {input_path}")
else:
print(f"Skipping non-image file: {item}")
# 设置输入和输出文件夹路径
input_folder = "imgs2/" # 替换为你的输入文件夹路径
output_folder = "imgs3/" # 替换为你的输出文件夹路径
# 调用函数处理图像
grayscale_folder_images(input_folder, output_folder)
三、处理结果
处理前:
处理后:
单图对比(前后):