Python 为什么jpeg图像加载后变成2D数组

Python 为什么jpeg图像加载后变成2D数组,python,image,image-processing,Python,Image,Image Processing,我有一个jpeg图像,如下所示: from PIL import Image jpgfile = Image.open("logo.jpg") 现在我想加载这个图像来进行图像处理。我使用以下代码: from scipy import misc import numpy as np im = misc.imread('logo.jpg') 因为图像是彩色的,我希望im是3D矩阵。但是,im.shape给了我一个2D矩阵: (150150) 我尝试了另一种加载图像的方法,如下所示: from

我有一个jpeg图像,如下所示:

from PIL import Image
jpgfile = Image.open("logo.jpg")

现在我想加载这个图像来进行图像处理。我使用以下代码:

from scipy import misc
import numpy as np
im = misc.imread('logo.jpg')
因为图像是彩色的,我希望
im
是3D矩阵。但是,
im.shape
给了我一个2D矩阵:
(150150)

我尝试了另一种加载图像的方法,如下所示:

from PIL import Image
jpgfile = Image.open("logo.jpg")
但是
jpgfile
的大小也是
150x150
。 我的问题是:我的代码有什么问题,或者我对RGB图像的理解有什么问题?
非常感谢。

从这里的文档:,指定
mode='RGB'
以获取红色、绿色和蓝色值。输出似乎默认为转换为灰度值。

您对RGB的理解是完美的,这听起来很可疑。请注意,
scipy.misc
使用PIL,因此您只测试了一个版本。问题可能是JPG格式。你试过先转换成png吗?当你谈论jpg图像的问题时,为什么要发布png图像。也许只是添加正确的示例图像?我再次上传了jpeg文件,很抱歉让您感到困惑,结果没有什么不同。@AndrasDeak我很确定每一个超过1mb的png都被制作成jpeg,这确实更有意义,但对于一些所谓的问题也会有问题。更新:两者都有(jpg和png)在scipy和Skipage为我工作。JPEG:
(250250,3)
PNG:
(150150,4)
。显示您正在使用的libs版本。页面上哪里有这样的说明?老实说,我很好奇,我在多次读取后都找不到它(还有,您有一个输入错误,“灰度”),它抛出了错误:
回溯(最近一次调用):文件“”,第1行,在文件“/Library/Python/2.7/site packages/PIL/Image.py”中,第2215行,在open-raise-ValueError中(“错误模式%r”%mode)ValueError:错误模式“RGB”
@lenhhoxung那么您使用的是一些非常旧的scipy版本。更新它,所有的痛苦都会消失。问题是:为什么会有如此古老的版本?您是否有可能在windows上使用python xy?我也怀疑
它默认转换为灰度值。
这是错误的,在当前的scipy版本中工作方式不同。@lenhhoxung,而不是根据需要在操作系统上继续。但更新scipy将是最好的选择。如果你不想做的话。使用pillow、imageio或freeimage手动阅读。