在numpy中创建“白色”图像(2D图像)

2024-04-25 05:04:13 发布

您现在位置:Python中文网/ 问答频道 /正文

看起来我在理解图像如何在numpy数组中表示方面似乎有一些基本的差距。

img = np.ones([100,100,3], dtype=np.uint8)*255
plt.imshow(img)

上面的代码创建一个“白色”3通道图像。

每个像素都有值[255255255]

明白了。

现在我想创建一个“白色”灰度图像。我真的不需要RGB通道来存储白色图像,是吗?

img_bw = np.ones([100,100], dtype=np.uint8)*255
plt.imshow(img_bw, cmap = "gray")

这将创建一个“黑色图像”,即使每个像素位置的值是255?

好吧,让我把之前的3通道白色图像转换成灰度,看看numpy数组是什么样子。

img_bw1 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
plt.imshow(img_bw1, cmap = "gray") 

这也给了我一个“黑色图像”?

那么灰度“白色图像”的numpy矩阵到底是什么样的呢?

img = io.imread("https://www.colorcombos.com/images/colors/FFFFFF.png" , as_grey=True)
plt.imshow(img*255, cmap = "gray")

这是一个白色的图像。此矩阵中的每个像素的值都在216及以上

plt.imshow(img, cmap = "gray")

这也是一个白色的图像。此矩阵中的每个像素的值都在0.86及以上。

我完全迷路了。

问题-

  1. 如何在numpy中创建灰度二维白色图像?

  2. 为什么用cv2.Color不把numpy中的3通道白色图像转换成灰度呢?


Tags: 图像numpyimgnponesplt矩阵像素