我有一个类似于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
似乎已安装)。此外,阅读较小的图像工作正常,而阅读大图像突然导致问题。有没有人知道发生了什么?
答案 0 :(得分:1)
Scipy正在调用np.array
,但是当它看不到__array__
时,会创建一个对象数组。您应该使用原始PIL并从那里读取信息,在SO中有很多关于如何将PIL对象转换为Numpy数组的问题。
它与较小的一起工作的原因可能是它的大小太大以致PIL要小心记忆,但我不确定。
可能有效的替代方法是使用Pillow(PIL的一个分支)或matplotlib