使用此代码:
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
答案 0 :(得分:5)
如果您使用cv2.IMREAD_GRAYSCALE
,则图像确实被展平为灰度级(您可以使用cv2.imread('im.jpg', cv2.IMREAD_GRAYSCALE).shape
和cv2.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()