我正在尝试使用matplotlib读取RGB图像并将其转换为灰度图像。
在matlab中,我使用这个:
img = rgb2gray(imread(image.png));
在matplotlib tutorial中,并没有这个功能。这里只能读取图像
import matplotlib.image as mpimg
img = mpimg.imread(image.png)
然后切片数组,但是这不是从我所了解的将RGB转换为灰度。
lum_img = img[:,:,0]
编辑:
很难相信numpy或matplotlib没有内置函数来从rgb转换为灰色。这不是图像处理中的常见操作吗?
我写了一个非常简单的函数,可以在5分钟内使用imread导入的图像。但这是非常低效的,所以我希望有专业的内置实现。
matlab的(NTSC /PAL)实现:
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
最佳解决思路
PIL来做是可以的吧:
from PIL import Image
img = Image.open(image.png).convert(LA)
i