利用Python将彩色图像转为灰度图像的两种方法

Evan
Evan
发布时间:2026-10-16 | 6人浏览过
原创

本文介绍利用Python将彩色图像转换为灰度图像的两种常用方法。第一种基于cv2库,通过cvtColor函数实现,涉及图像读取、显示及窗口保持;第二种基于PIL库,利用Image模块的convert方法配合pyplot展示。文章提供了完整的代码示例及批量处理技巧,帮助开发者快速掌握图像灰度化技术。

第一种方法

在Python的cv2库中,内置了将彩色图像转换为灰度图像的功能,操作十分简便。整个示例代码仅包含9行,其中核心处理逻辑仅占1行。

基本思路如下:首先读取一张彩色图片,并在窗口中将其显示出来;随后调用cv2进行灰度化处理,此时得到的结果是一个二维灰度矩阵。为了保存该图像,需要先将array类型转换为image对象,最后在另一个窗口中展示结果。为防止显示窗口瞬间关闭,必须添加waitKey(0)语句以维持窗口停留。


import cv2
from PIL import Image
#读取彩色图像
color_img = cv2.imread(r'dataset3/beauty.jpg')
#在窗口中显示图像,该窗口和图像的原始大小自适应
cv2.imshow('original image',color_img)
#cvtColor的第一个参数是处理的图像,第二个是RGB2GRAY
gray_img=cv2.cvtColor(color_img,cv2.COLOR_RGB2GRAY)
#gray_img此时还是二维矩阵表示,所以要实现array到image的转换
gray=Image.fromarray(gray_img)
#将图片保存到当前路径下,参数为保存的文件名
gray.save('gray.jpg')
cv2.imshow('Gray Image',gray_img)
#如果想让窗口持久停留,需要使用该函数
cv2.waitKey(0)

第二种方法

PIL库中的Image模块同样提供了将图像转换为灰度图的功能,配合pyplot即可在画布上直接显示。该方案总共8行代码,核心转换逻辑同样只有1行。


from PIL import Image
from matplotlib import pyplot as plt
color_img=Image.open('dataset3/beauty.jpg')
gray_img=color_img.convert('L')
plt.figure('beauty')
plt.imshow(gray_img,cmap='gray')
plt.axis('off')
plt.show()

python 批量将图片转为灰度图


from PIL import Image
import os
path = 'F:/QUEXIANJIANCESHIYAN/posdata'
file_list = os.listdir(path)
for file in file_list:
    I = Image.open(path+"/"+file)
    L = I.convert('L')
    L.save(path+"/"+file)
    #print(file)

总结

至此,关于利用Python将彩色图像转为灰度图像的介绍已完成。如需了解更多相关Python彩色图像转灰度内容,建议搜索本站往期文章或继续浏览后续内容。感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表