首页 > 解决方案 > Python在二维数组中保存和读取灰度图像?

问题描述

我想保存没有任何通道的图像,因此尺寸仅为 2。因此,有没有办法在 matplotlib 中做到这一点?

我已经尝试过使用

matplotlib.pyplot.imsave('img.png', image, cmap='gray')

但是当我阅读它时

matplotlib.pyplot.imread('img.png')

维度是 3。所以我很困惑如何。我知道也许我不能使用 imread 但我能做些什么呢?

标签: pythonmatplotlibcomputer-vision

解决方案


如果你安装了opencv,你可以试试:

cv2.imread('1.png', cv2.IMREAD_GRAYSCALE)

此外,您也可以尝试 PIL。

from PIL import Image
Image.fromarray(array)

我没有在网上看到这个,但是这个有效!感谢我的老师!

skimage.io.imsave('1.png', np.around(image*255).astype(np.uint8))

要使用它,您必须预先安装 skimage。

pip3 install scikit-image

感谢@ Cris Luengo在上面的评论中指出

“从文档来看,matplotlib 似乎只保存 RGB 或 RGBA 格式的图像文件。您必须使用不同的包来保存灰度图像。下面建议的 OpenCV 只是一种选择。有很多。试试 PIL 。”

看到就给他点个赞吧!


推荐阅读