Python BMP图转灰度图

BMP 格式的图像用得还挺多的,尤其在 Windows 系统下,存的就是最原始的像素数据——每个像素 RGB 通道,颜色全放进去了,24 位那种,细节足。

灰度图呢,就比较省事了,一个通道,一个值,亮度说了算,0 是黑,255 是白。你要是想把 BMP 图转成灰度图,得把每个 RGB 值搞成一个灰度值,用个平均公式也行:(R+G+B)/3,不过更常用的是加权的那种,模拟人眼视觉感知的:0.299*R + 0.587*G + 0.114*B

转换的时候呢,先得读 BMP 文件的头部信息,搞清楚图像的宽高和位深度,一像素一像素地遍历,套公式算出灰度值,再把 RGB 值替换掉就完了。

你用 Python 这种事还挺省事的,PIL库用起来顺手。几行代码就搞定,像下面这样:

from PIL import Image

def bmp_to_grayscale(bmp_path, gray_path): img = Image.open(bmp_path) gray_img = img.convert('L') gray_img.save(gray_path)

想用只要调用一下就行:bmp_to_grayscale('input.bmp', 'output.bmp')convert('L') 就是关键,直接把彩色图转成灰度模式。

不过要注意,灰度图虽然简单,但不同格式方式不一样,比如 PNG、TIFF 啥的还带点元数据,不是只改像素就行。你要是需要控制得更细,可以再深挖下格式细节。

另外想更系统了解下颜色空间的转换,可以看看这些链接:

如果你平时做图像、识别,或者搞一些低层图形开发的项目,把 BMP 转灰度图这种小工具写一写,还是挺实用的。

rar
.rar 预估大小:3个文件
folder
灰度图 文件夹
file
To256Gray.cpp 13KB
file
main.cpp 387B
file
To256Gray.h 469B
rar 文件大小:3.88KB