当前位置: 首页 > 面试题库 >

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

朱锐
2023-03-14
问题内容

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

但是,当我尝试将数组重塑为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()

随机图像

编辑(2018):

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

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



 类似资料:
  • 问题内容: 我正在使用aparapi编写Buddhabrot分形生成器。我将其中的OpenCL部分工作了,得到了一个表示每个像素的单维数组。我将最终图像的尺寸作为最终整数,并编写了代码以获取该数组中任意点的索引。我想将其另存为图像,并且尝试将BufferedImage与TYPE_USHORT_GRAY一起使用。这是我到目前为止的内容: 问题是,我不知道将RGB设置为什么。我需要做什么? 问题答案:

  • 我需要在灰度图像中分割出异常。在算法的某个地方,我计算一个矩阵,其中包含需要设置为零的已知像素强度。我该怎么做? 例如: 计算的像素强度:(数组([94,95,96,97,98,99,100,101,102,103,104,105,106,107、108,109,110,111、112、113、114、115、116、117、118、119、120、121、122、123、124、125、126、

  • 问题内容: 我想将具有形状的灰度图像转换为具有形状的3通道图像。使用可以完成工作,但是必须有一个整洁的方法。这是程序中的一段代码,有人可以提示。请指教。 问题答案: 您可以使用它来更简洁地完成此操作:

  • 问题内容: 你好,我正在将图像从彩色转换为纯黑白,结果是深色图像。我没有原因。以下是我的代码,它受SO上其他代码的启发。任何指导都会有所帮助。 我没有弄错我在做什么。使用任何其他开放源代码库的任何其他想法都可以。 工作::::: 问题答案: 您实际上并没有将彩色图像转换为黑白图像。您正在创建与空白图片相同大小的新空白图片。您实际上需要做一些处理旧图像的操作。

  • 我有一个关于将我的PNG图像更改为灰度的问题。我想做一个方法,接受byte[]图像作为参数,并作为byte[]返回新修改的灰度图像。 我发现了一些链接,使图像灰度与JPEG图像使用下面的片段。 我的参考资料在下面:我如何使用ImageJ作为单独的Java应用程序的库?https://www.mkyong.com/java/how-to-convert-byte-to-bufferedimage-i

  • 问题内容: 我试图用来读取RGB图像并将其转换为灰度。 在matlab中,我使用以下代码: 在matplotlib教程中,他们没有介绍。他们只是读了图像 然后将它们切成薄片,但这与根据我的理解将RGB转换为灰度不是同一回事。 我发现很难相信numpy或matplotlib没有将rgb转换为灰色的内置函数。这不是图像处理中的常见操作吗? 我写了一个非常简单的函数,可以在5分钟内使用导入的图像。这是非