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
预估大小:3个文件
灰度图
文件夹
To256Gray.cpp
13KB
main.cpp
387B
To256Gray.h
469B
3.88KB
文件大小:
评论区