python - 在python中将大图像文件读取为数组

标签 python image numpy python-imaging-library

有谁知道如何使用 python 打开大型图像文件? 我尝试使用 ipython 通过 Windows 命令提示符打开图像文件(大约 2 GB),但每次将图像值更改为数组后它都会崩溃。

我的笔记本电脑是 window7-64bit,配备 4GB 内存和 Intel(R) Core(TM) i7-2860 QM CPU。

错误信息是:python.exe has stopped working 一个问题导致程序停止正常工作。 Windows 将关闭程序并在有可用解决方案时通知您

这是我的代码。

import Image
import numpy as num
im=Image.open('myimage.tif')
imarray=num.array(im)

最佳答案

你有多少内存?您需要 2GB 以上的 RAM 来存储 2-gig 图像。我不知道 Image 在存储图像方面的效率如何,但是字节列表为列表中的每个元素使用 四个 字节的空间,所以你会燃烧更多超过 8GB 的​​(虚拟)内存……还有很多耐心。 编辑:因为您只有 4(或 3)GB 可以玩,这几乎肯定是您的问题。

但是为什么要尝试将其转换为数值数组?使用 Image.open 返回的 im 对象的方法,如 PIL Tutorial .

我不知道你在对图像做什么,但也许你可以在不读取内存中的整个图像的情况下完成它,或者至少不将整个对象转换为 numpy 数组.如果可能,一点一点地阅读它以避免炸毁你的机器:阅读 python 生成器,并查看 Image.getdata() 方法,它一次返回你的图像一个像素值。

关于python - 在python中将大图像文件读取为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11585699/

相关文章:

ios - AFNetworking - 请求和图像的缓存时间如何工作?

python - 高级 numpy/pandas 索引

python - 比较 n 维 numpy 数组中的值

javascript - 如何从 img alt 标签创建 <span> 元素并将其附加到 <img> 行之后

javascript - 预加载所有类型图像的最佳方式是什么?

python - 用 cython 添加数组比 numpy 慢?

python - 安装包时无法导入名称 'html5lib' 错误

python - 有选择地从另一个 Jupyter Notebook 导入

python - ipython 已安装但未在 OSX mavericks 上运行

python - 使用 "current-directory"imports 导入模块