渲染灰度图像

blu*_*sky 2 python opencv image image-processing grayscale

使用此代码:

import cv2
import matplotlib.pyplot as plt
%matplotlib inline 

plt.imshow(cv2.imread('badger.jpeg' , cv2.IMREAD_GRAYSCALE))
Run Code Online (Sandbox Code Playgroud)

将图像读取为灰度并绘制到屏幕.

图像绘制为:

在此输入图像描述

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

我的代码使用IMREAD_GRAYSCALE参数将图像作为灰度读取是否正确?

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

sac*_*cuL 5

如果你使用的话,图像确实被压平成灰度cv2.IMREAD_GRAYSCALE(你可以使用cv2.imread('im.jpg', cv2.IMREAD_GRAYSCALE).shape和测试它cv2.imread('im.jpg').shape,并且看到前者是3维阵列而后者是2维阵列)

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

在此输入图像描述

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

在此输入图像描述

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

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述