【问题标题】:Python save and read a grayscale image in two dimension array?Python在二维数组中保存和读取灰度图像?
【发布时间】:2020-12-24 09:22:45
【问题描述】:

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

我已经尝试过使用

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

但是当我阅读它时使用

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

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

【问题讨论】:

  • 一张灰度图有3个维度,第3个代表亮度
  • 谢谢!已经换了问题。那么你知道如何使它们成为二维的吗?像 array.shape = (256,256),而不是 (256,256,3) ?
  • 您的意思是 (256,256, 1) 对吗?因为 (256,256) 不是图像
  • @YukiShioriii:这没有任何意义。灰度图像是一个二维矩阵。
  • 从文档看来,matplotlib 只保存 RGB 或 RGBA 格式的图像文件。您必须使用不同的包来保存灰度图像。下面建议的 OpenCV 只是一种选择。有许多。试试 PIL。

标签: python matplotlib computer-vision


【解决方案1】:

如果你安装了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。”

看到后给他点赞!

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2020-03-14
    相关资源
    最近更新 更多