scipy.misc.imread返回没有大小/形状的对象

时间:2014-07-10 11:41:34

标签: python scipy python-imaging-library

我有一个类似于this one的问题,但不完全相同。我的目标是使用scipy.misc.imread读取TIFF图像,然后使用函数返回的灰度值数组。当我为一张尺寸为1280x960像素的图像执行此操作时,我得到了我需要的东西。但是,当我为更大的图像(6272x897像素)尝试相同时,imread将返回以下对象:

<PIL.TiffImagePlugin.TiffImageFile image mode=LA size=6272x897 at 0x3906B48>

我想从这个对象中提取数据,例如使用.getdata(),但是对象本身似乎没有任何形状或大小,就像上面链接的问题中的情况一样。 Ben随后提出了以下解决方案:

pip uninstall PIL
brew install libjpeg
pip install PIL

但是,我正在使用TIFF文件,而不是JPEG(libtiff似乎已安装)。此外,阅读较小的图像工作正常,而阅读大图像突然导致问题。有没有人知道发生了什么?

1 个答案:

答案 0 :(得分:1)

Scipy正在调用np.array,但是当它看不到__array__时,会创建一个对象数组。您应该使用原始PIL并从那里读取信息,在SO中有很多关于如何将PIL对象转换为Numpy数组的问题。

它与较小的一起工作的原因可能是它的大小太大以致PIL要小心记忆,但我不确定。

可能有效的替代方法是使用Pillow(PIL的一个分支)或matplotlib