关于如何使用Python将批次彩色图片转换为灰度图片-详解

一.将一张彩色图片转换为灰度图片

目前使用Python将彩色图片转为灰度图片的有多种方式,例如使用Pillow库函数、OpenCV库函数、matplotlib等,此处本文就使用Pillow一种方式进行展示。具体如下:
第一步:导入处理图片的Python包

# 第一步:导入相应的包
# Pillow包包含了大量处理图像的函数
from PIL import Image

第二步:使用了Pillow库读取彩色图像

# 第二步:加载彩色图片
# 首先定义存在彩色图片的变量名称
image_path = './data/image/1.webp'
load_image = Image.open(image_path)

图片显示如下:
关于如何使用Python将批次彩色图片转换为灰度图片-详解_第1张图片
图片来自于https://img-blog.csdnimg.cn/94de71d66d4643dcb0c9f46b719b5089.png

第三步:然后将其转换为灰度图像

#第三步:处理彩色图片,将其改变为灰度图片
# PIL有九种不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。大家可以尝试每一种
# 1:表示将彩图为二值图像,非黑即白。每个像素用8个bit表示,0表示黑,255表示白。
# L:表示将彩色图片转换为灰度图像,每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
# 转换公式:L = R * 299/1000 + G * 587/1000+ B * 114/1000。
# P: 8位像素,使用调色板映射到任何其他模式,具体的功能可以区官网查看,或者自己尝试使用,但不经常使用
# RGB: 通常是对彩色图片进行加强3x8位像素,真彩色
# RGBA: 4x8位像素,带透明度掩模的真彩色
# CMYK: 4x8位像素,分色
# YCbCr: 3x8位像素,彩色视频格式
# I: 32位有符号整数像素
# F: 32位浮点像素
convert_image = load_image.convert('L')

将彩色图片转化为灰度图片如下
关于如何使用Python将批次彩色图片转换为灰度图片-详解_第2张图片
第四步:保存灰度图像文件。

convert_image.save('./data/gray_image/1L.webp')

二.批量将彩色图片转换为灰度图片
代码如下:

# 第一步:导入使用到的包
import os
from PIL import Image
# 定义文件存储和获取文件的路径
# 指定彩色图像文件夹路径和灰度图像文件夹路径
color_folder = "./data/image/"
gray_folder = "./data/gray_images/"
filenames = []
# 如果灰度图像文件夹不存在,则创建
if not os.path.exists(gray_folder):
    os.mkdir(gray_folder)
# 遍历目录下所有文件的名字
# 下面是一个示例代码,演示了如何遍历目录下的所有文件:
# 指定要遍历的目录路径,使用os.walk()函数遍历目录及其子目录下的所有文件
for root, dirs, files in os.walk(color_folder):
    for file_name in files:
        # 将文件名进行存储
        filenames.append(file_name)
# 遍历彩色图像文件夹中的所有文件
for filename in os.listdir(color_folder):
    # 打开彩色图像文件
    for filename in filenames:
        img_color = Image.open(os.path.join(color_folder, filename))
        # 转换为灰度图像
        img_gray = img_color.convert("L")
        # 保存灰度图像文件
        img_gray.save(os.path.join(gray_folder, filename))

以上代码均为业余无聊时间写出的,有什么问题欢迎大家批评指正!
其实彩色图片转换为灰度图片的应用挺多,大家可以尝试使用Opencv的库函数进行转化,目前cv2函数比较常用,大家有兴趣可以尝试一下。

你可能感兴趣的:(人工智能,python,开发语言,计算机视觉)