渲染灰度图像

Rendering grayscale image

使用此代码:

import cv2
import matplotlib.pyplot as plt
%matplotlib inline 

plt.imshow(cv2.imread('badger.jpeg' , cv2.IMREAD_GRAYSCALE))

图像被读取为灰度并绘制到屏幕上。

图像绘制为:

这似乎不是灰度,因为渲染图像中包含的颜色不在从白色到灰色的范围内?

我的代码使用 IMREAD_GRAYSCALE 参数读取灰度图像是正确的 ?

图片位于:https://sciencing.com/difference-between-badger-wolverine-8645505.html

如果您使用 cv2.IMREAD_GRAYSCALE,图像确实被展平为灰度(您可以使用 cv2.imread('im.jpg', cv2.IMREAD_GRAYSCALE).shapecv2.imread('im.jpg').shape 进行测试,并看到前者是一个 3 维数组,后者是一个二维数组)

问题在于 matplotlib 选择映射像素值的方式。使用 plt.imshow() 时,它使用默认颜色图(which is viridis,出于某种原因)。这意味着像素强度/值将映射到以下内容:

您可以将 cmap 更改为 gray,以便将它们映射到以下内容:

plt.imshow(cv2.imread('badger.jpeg', cv2.IMREAD_GRAYSCALE), cmap='gray')

plt.show()