python - 将大矩阵转换为灰度图像

标签 python image matrix grayscale

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

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

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

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

如有任何帮助或建议,我们将不胜感激。谢谢。

最佳答案

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

如果是这样,您可以在调整大小后执行(使用 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()

Random image

编辑(2018):

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

还有下面的评论说 arr.astype(np.uint8) 也是需要的,但我还没有测试过

关于python - 将大矩阵转换为灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694772/

相关文章:

python - 如何防止未声明的变量和方法的 AttributeError 并多次修复 __getattr__ 方法调用?

python - 如何从 pandas 的每一列中获取 n 个最多的列值

python - Lambda 函数和 0

python - 在代码中实现可选的记录器

javascript - 使用 Prototype/Scriptaculous 预加载图像

matrix - Jenkins 多配置作业失败时不会继续

c - 如何在opencv中转换像素值以显示图像

java - 我们可以在 xml 中为 android 背景制作多色渐变吗?

matlab - 在 Octave 中保存/加载大型矩阵

Python:将方阵提高到负半幂