将大矩阵转换为灰度图像
我有一个包含 3,076,568 个二进制值(1 和 0)的 NumPy 数组。我想将其转换为矩阵,然后在 Python 中转换为灰度图像。
但是,当我尝试将数组重塑为 1,538,284 x 1,538,284 矩阵时,出现内存错误。
如何减小矩阵的大小,使其变成适合屏幕的图像而不丢失唯一性/数据?
此外,我如何将其变成灰度图像?
任何帮助或建议将不胜感激。谢谢。
I have a NumPy array of 3,076,568 binary values (1s and 0s). I would like to convert this to a matrix, and then to a grayscale image in Python.
However, when I try to reshape the array into a 1,538,284 x 1,538,284 matrix, I get a memory error.
How can I reduce the size of the matrix so that it will turn into an image that will fit on a screen without losing the uniqueness/data?
Furthermore, how would I turn it into a grayscale image?
Any help or advice would be appreciated. Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你的“二进制值”数组是一个字节数组?
如果是这样,您可以在调整大小后执行(使用 Pillow):
然后
im.show()
来查看它。如果您的数组只有 0 和 1(1 位深度或黑白),您可能需要将其乘以 255
以下是一个示例:
编辑(2018):
这个问题是在 2011 年写的,自从需要在加载时使用
mode='L'
参数后,Pillow 就发生了变化来自数组
。另外在下面的评论中据说还需要
arr.astype(np.uint8)
,但我还没有测试过它Your array of "binary values" is an array of bytes?
If so, you can do (using Pillow) after resizing it:
And then
im.show()
to see it.If your array has only 0's and 1's (1-bit depth or b/w) you may have to multiply it to 255
Here an example:
Edit (2018):
This question was written in 2011 and Pillow changed ever since requiring to use the
mode='L'
parameter when loading withfromarray
.Also on comments below it was said
arr.astype(np.uint8)
was needed as well, but I have not tested it使用 PIL 并不是真正需要的,您可以直接使用 pyplot 绘制数组(见下文)。要保存到文件,您可以使用
plt.imsave('fname.png', im)
。下面的代码。
您还可以使用
plt.show(im)
在新窗口中显示图像。Using PIL is not really needed, you can plot the array directly with pyplot (see below). To save to a file, you could use
plt.imsave('fname.png', im)
.Code below.
You can also use
plt.show(im)
to display image in new window.您可以使用
来执行此操作scipy.misc.toimage
和im.save("foobar.png")
:给出
You can do so with
scipy.misc.toimage
andim.save("foobar.png")
:which gives
例如,如果您的 PC 中有一个包含一些数据(图像)的 txt 文件,为了将此类数据可视化为灰度图像,您可以使用以下命令:
If you have as example a txt file in your PC with some data (an image), in order to visualize such data as gray scale image you can use this: