将大型矩阵转换为灰度图像

发布于 2021-01-29 14:55:20

我有一个3,076,568个二进制值(1s和0s)的NumPy数组。我想将其转换为矩阵,然后在Python中转换为灰度图像。

但是,当我尝试将数组重塑为1,538,284 x 1,538,284矩阵时,出现内存错误。

如何减小矩阵的大小,以便将其变成适合屏幕显示的图像而又不丢失唯一性/数据?

此外,如何将其转换为灰度图像?

任何帮助或建议,将不胜感激。谢谢。

关注者
0
被浏览
101
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您的“二进制值”数组是字节数组吗?

    如果是这样,您可以在调整大小后执行以下操作(使用Pillow):

    from PIL import Image
    im = Image.fromarray(arr)
    

    然后im.show()看到它。

    如果您的数组只有0和1(1位深度或黑白),则可能需要将其乘以255

    im = Image.fromarray(arr * 255)
    

    这里有个例子:

    >>> arr = numpy.random.randint(0,256, 100*100) #example of a 1-D array
    >>> arr.resize((100,100))
    >>> im = Image.fromarray(arr)
    >>> im.show()
    

    随机图像

    编辑(2018):

    这个问题写于2011年,自从要求mode='L'在加载时使用参数以来,Pillow发生了变化fromarray

    另外,在下面的评论中,据说arr.astype(np.uint8)也有必要,但我尚未对其进行测试



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看