为什么scipy.ndimage.io.imread返回PngImageFile,而不返回值数组

姆瓦斯科姆

我有两台安装了scipy 0.12和PIL的机器。在一台机器上,当我尝试读取.png文件时,它将返回一个大小为(wxhx 3)的整数数组:

In[2]:  from scipy.ndimage.io import imread
In[3]:  out = imread(png_file)
In[4]:  out.shape
Out[4]: (750, 1000, 4)

在另一台机器上,使用相同的图像文件,这将返回PIL.PngImagePlugin.PngImageFile包装在数组中对象

In[2]: from scipy.ndimage.io import imread
In[3]: out = imread(png_file)
In[4]: out.shape
Out[4]: ()
In[5]:  out
Out[5]: array(<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1000x750 at 0x1D40050>, dtype=object)

我看不到任何方法来访问后一个对象的数据。

我有一种模糊的感觉,那就是PIL使用Png库读取图像的方式出了问题,但是还有没有更具体的东西会出错并导致这种现象?

肯·查特菲尔德

您可能安装了不完整的Python Imaging Library(PIL),SciPy依靠该库来读取图像。PIL依赖于libjpeg软件包来加载JPEG图像,并依赖于zlib软件包来加载PNG图像,但是可以不安装而安装(在这种情况下,它无法加载库缺少的任何图像)。

我遇到了与上述JPEG图像完全相同的问题。不会引发任何错误消息,但是SciPy调用仅返回包装的PIL对象,而不是将图像正确加载到数组中,这使得调试起来特别棘手。但是,当我尝试直接使用PIL加载图像时,得到了:

> import Image
> im = Image.open('001988.jpg')
> im
   <JpegImagePlugin.JpegImageFile image mode=RGB size=333x500 at 0x20C8CB0>
> im.size
> (333, 500)
> pixels = im.load()
   IOError: decoder jpeg not available

因此,我卸载了PIL的副本,安装了丢失的libjpeg(对于我而言,可能zlib是您的),重新安装了PIL以注册该库的存在,现在使用SciPy加载图像可以完美地工作:

> from scipy import ndimage
> im = ndimage.imread('001988.jpg')
> im.shape
   (500, 333, 3)
> im
   array([[[112, 89, 48], ...
                     ..., dtype=uint8)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Scipy的ndimage.map_coordinates对于某些数组不返回任何值或错误的结果?

来自分类Dev

scipy.ndimage.generic_filter返回类型错误

来自分类Dev

scipy.ndimage.imread 和 matplotlib.pyplot.imread 有什么区别?

来自分类Dev

为什么返回值不更新?

来自分类Dev

函数不返回值,为什么?

来自分类Dev

为什么查询不返回值

来自分类Dev

为什么不返回值?

来自分类Dev

为什么传递asNumber'ed字符串的返回值会破坏io?

来自分类Dev

使用scipy.ndimage.imread将图像文件加载到ndarray时出错

来自分类Dev

scipy.io.loadmat()不返回字典

来自分类Dev

numpy数组的scipy.ndimage.interpolation移位给出了错误的结果-错误?

来自分类Dev

IO返回值测试

来自分类Dev

Scipy NDimage相关:难以忍受的缓慢

来自分类Dev

scipy.ndimage.convolve背后的数学

来自分类Dev

scipy.ndimage.label:包括误差幅度

来自分类Dev

Socket.io和异步不返回值

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么systemctl在NRPE检查中不返回值?

来自分类Dev

为什么此函数不返回值?

来自分类Dev

为什么这个简单的函数不返回值?

来自分类Dev

为什么这个方法不返回值?

来自分类Dev

为什么Scipy stdDev返回错误的结果?

来自分类Dev

为什么Scipy stdDev返回错误的结果?

来自分类Dev

如何使用scipy.ndimage.interpolate在3d中随机旋转一个numpy数组?

来自分类Dev

为什么映射可枚举的返回值不返回期望值

来自分类Dev

为什么用C语言编写的程序在比较输入和某些数组时不返回值5?

来自分类Dev

从socket.io返回值

来自分类Dev

为什么socket.io为事件返回多次

来自分类Dev

为什么返回值不同?

Related 相关文章

热门标签

归档