如何在 Matplotlib 中以灰度显示图像

Suraj Joshi 2023年1月30日 2020年11月7日
  1. matplotlib.pyplot.imshow()
  2. 示例。Matplotlib 以灰度显示图像
如何在 Matplotlib 中以灰度显示图像

要使用 Matplotlib 显示灰度图像,我们使用 matplotlib.pyplot.imshow(),参数 cmap 设置为'grayvmin 设置为 0vmax 设置为 255,默认情况下 cmapvminvmax 的值设置为 None

matplotlib.pyplot.imshow()

matplotlib.pyplot.imshow(X, 
                         cmap=None, 
                         norm=None, 
                         aspect=None, 
                         interpolation=None, 
                         alpha=None,
                         vmin=None,
                         vmax=None, 
                         origin=None, 
                         extent=None, 
                         shape=<deprecated parameter>, 
                         filternorm=1, 
                         filterrad=4.0, 
                         imlim=<deprecated parameter>, 
                         resample=None, 
                         url=None,
                         *,
                         data=None, 
                         **kwargs)

示例。Matplotlib 以灰度显示图像

import matplotlib.pyplot as plt
import matplotlib.image as img

image = img.imread('lena.jpg')

plt.imshow(image[:,:,1], cmap='gray', vmin = 0, vmax = 255,interpolation='none')
plt.show()

输出:

Matplotlib 显示灰度图像

本方法使用 matplotlib.image 模块中的 imread() 函数读取图像 lena.jpg,它是一个 RGB 图像。要把图像显示为灰度,我们只需要一个颜色通道。所以下一步,只需要一个颜色通道,使用 plt.imshow() 方法显示图像,cmap 设置为'grayvmin 设置为 0vmax 设置为 255

最后,我们使用 show() 方法显示一个窗口,以灰度显示图像。要运行上面的脚本,我们必须在当前工作目录下有 lena.jpg

只取一个颜色通道并不是将 RGB 图像转换为灰度图像的合适方式,因为我们有特定的算法来提高转换效率。这些算法几乎在所有流行的图像处理库中都可以实现。下面,演示一个使用 PIL 的示例。

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

image=Image.open('lena.jpg')
gray_image=image.convert('L')
gray_image_array=np.asarray(gray_image)
plt.imshow(gray_image_array,cmap='gray', vmin = 0, vmax = 255)
plt.show()

输出:

Matplotlib 使用图像模块以灰度显示图像

在这里,我们使用 open() 函数读取当前工作目录中的图像 lena.jpg,然后使用 convert() 方法以'L'为参数将图像转换为灰度图像。之后,我们将灰度图像转换为 NumPy 数组,并使用 imshow() 方法显示图像。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Matplotlib Images