matplotlib相当于skimage.io.imread(fname,as_grey = True)吗?

Yux*_*ang 2 python matplotlib scipy scikit-image

由于这是一种非常普遍的做法...我想知道matplotlib是否等效于scikit-image中的此函数?

from skimage import io
im = io.imread(fname, as_grey=True)
Run Code Online (Sandbox Code Playgroud)

要直接读取RGB文件为灰度?

我需要使用等效的matplotlib,因为我正在使用它来绘制结果。正如我所观察到的,似乎io.imread读取的ndarray与plt.imread读取的ndarray不相等。

谢谢!

Ste*_*alt 5

您可以使用读取图像matplotlib.pyplot.imread。这将为您提供RGB或RGBA图像。如果获得RGBA图像,则可能要丢弃alpha层:

rgb = rgba[..., :3]
Run Code Online (Sandbox Code Playgroud)

您可以通过执行以下操作获得灰度图像的近似值:

rgb.mean(axis=2)
Run Code Online (Sandbox Code Playgroud)

但这并不完全正确。一个人应该用不同的权重乘以通道,然后将它们合并,即

([0.2125, 0.7154, 0.0721] * rgb).sum(axis=2)
Run Code Online (Sandbox Code Playgroud)