渲染灰度图像

时间:2018-08-07 01:31:18

标签: python image opencv image-processing grayscale

使用此代码:

import cv2
import matplotlib.pyplot as plt
%matplotlib inline 

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

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

图像绘制为:

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

enter image description here

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

enter image description here

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

plt.show()

enter image description here