numpy.asarray(Image.open(...))不起作用

时间:2014-03-05 02:09:21

标签: python numpy python-imaging-library

我相信numpy.asarray是为图像创建numpy数组的推荐方法。

numpy.asarray(Image.open("cat.jpg"))

我的机器上有两个python安装。一个是本地安装在我的主目录中。以及安装在/ usr。

中的那个

无论如何,本地安装不起作用。 numpy创建了一个JPEG对象的数组,想要我需要。

array(<JpegImagePlugin.JpegImageFile image mode=RGB size=1000x781 at 0x2395878>, dtype=object)

另一个python安装输出是一个numpy数组, 是我需要的。

array([[[ 89, 125,  51],
        [ 89, 125,  51],
        [ 90, 126,  52],
        ..., 
        [ 53,  55,  50],
        [ 53,  55,  50],
        [ 53,  55,  50]],

       [[ 89, 125,  51],
        [ 89, 125,  51],
        [ 90, 126,  52],
        ..., 
        [ 54,  56,  51],
        [ 53,  55,  50],
        [ 53,  55,  50]],

       ..., 


       [[132, 134, 147],
        [133, 135, 148],
        [133, 135, 148],
        ..., 
        [149, 165, 190],
        [149, 165, 190],
        [149, 165, 190]]], dtype=uint8)

任何人都知道修复?

2 个答案:

答案 0 :(得分:2)

使用NumPy读取和写入图像时,我使用

from scipy.misc import imread, imsave
image = imread("filename.jpg")

from skimage.io import imread, imsave

而不是直接通过PIL / Pillow。

答案 1 :(得分:0)

我遇到了完全相同的问题:numpy.asarray在本地计算机上无效(即生成包含单个图像对象的数组),虽然它在我的服务器上运行,但Python和PIL版本是在这两个地方都是一样的,Numpy版本在本地机器上更新(numpy.asarray无效的那个)。

在进行一些调查之后,我终于发现这个问题是因为PIL编译时没有支持某种格式:在我的情况下,我在尝试打印IOError: Decoder 'zip' not available字段时遇到__array_interface__ PIL在本地计算机上返回的图像对象。

要安装支持最常见图像格式的PIL,我只使用了系统存储库中的软件包,而不是使用pip安装PIL,一切正常:

sudo pip uninstall PIL
sudo apt-get install python-pil

然而,我还设法使用pip使一切正常。我做了如下(取自IOError: decoder zip not available)。

首先,我在我的系统中安装了必要的库:

sudo apt-get install libjpeg62-dev zlib1g-dev libfreetype6-dev

出于某种原因,pip没有看到这些库,它们必须在我的64位机器上链接到/usr/lib

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

由于PIL安装在那一刻仍然失败,并且有关缺少头文件的错误,我不得不创建另一个符号链接(参见Trying to install PIL "pip install PIL" and got this error.):

sudo ln -s /usr/include/freetype2 /usr/include/freetype

然后,我设法用pip重新安装PIL:

pip install -U --force-reinstall PIL

该命令的输出确认现在包括对JPEG和PNG格式的支持:

*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available