渲染灰度图像
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).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()
使用此代码:
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).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()