代码之家  ›  专栏  ›  技术社区  ›  blue-sky

渲染灰度图像

  •  2
  • blue-sky  · 技术社区  · 7 年前

    使用此代码:

    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 回复  |  直到 7 年前
        1
  •  5
  •   sacuL    7 年前

    如果使用 cv2.IMREAD_GRAYSCALE (您可以使用 cv2.imread('im.jpg', cv2.IMREAD_GRAYSCALE).shape cv2.imread('im.jpg').shape ,并看到前者是三维数组,后者是二维数组)

    问题在于 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