【问题标题】:Rendering grayscale image渲染灰度图像
【发布时间】:2019-01-14 00:04:20
【问题描述】:

使用此代码:

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

【问题讨论】:

标签: python image opencv image-processing grayscale


【解决方案1】:

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

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

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

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

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多