【问题标题】:Why jpeg image becomes 2D array after being loaded为什么jpeg图像加载后变成二维数组
【发布时间】:2016-10-10 16:54:25
【问题描述】:

我有一个 jpeg 图片如下:


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

from scipy import misc
import numpy as np
im = misc.imread('logo.jpg')

因为图像是彩色的,我希望im 是一个 3D 矩阵。但是,im.shape 给了我一个二维矩阵: (150, 150)

我尝试了另一种加载图片的方式,如下:

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

但是jpgfile 也有150x150 的大小。 我的问题是:我的代码有什么问题,或者我对 RGB 图像的理解是错误的? 非常感谢。

【问题讨论】:

  • 你对 RGB 的理解是完美的,这听起来很可疑。请注意,scipy.misc 使用 PIL,因此您只测试了一个版本。问题可能是JPG格式。您是否尝试过先转换为 png?
  • 当您谈论 jpg 图片的问题时,您为什么要发布 png 图片。也许只是添加正确的示例图像?
  • 我又上传了jpeg文件,给您添麻烦了,结果没有区别。
  • @AndrasDeak 我很确定每个超过 1mb 的 png 都会被制作成 jpeg,这确实更有意义,但对于一些 SO 问题也会有问题。
  • 更新: (jpg 和 png)都在 scipy 和 skimage 中为我工作。 JPEG:(250, 250, 3)PNG:(150, 150, 4)。显示您正在使用的库版本。

标签: python image image-processing


【解决方案1】:

从此处的文档:http://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.imread.html,指定 mode='RGB' 以获取红色、绿色、蓝色值。输出似乎默认转换为灰度数字。

【讨论】:

  • 该页面上的什么地方说的?老实说,我很好奇,多次阅读后我找不到它(另外,你有一个错字,“grays Cale”)
  • 它抛出错误:Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/PIL/Image.py", line 2215, in open raise ValueError("bad mode %r" % mode) ValueError: bad mode 'RGB'
  • @lenhhoxung 那么您使用的是一些非常旧的 scipy 版本。更新它,所有的痛苦都会消失。问题是:为什么会有这么旧的版本?你有机会在 Windows 上使用 python-xy 吗?
  • 我对@9​​87654324@ 也持怀疑态度,这是错误的,并且对于当前的 scipy 版本的工作方式不同。
  • @lenhhoxung 比在您的操作系统上根据需要继续。但是更新 scipy 将是最好的选择。如果你不想这样做。使用枕头、imageio 或 freeimage 手动阅读。
猜你喜欢
  • 2021-11-29
  • 1970-01-01
  • 2023-03-17
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2021-11-12
  • 2021-12-28
相关资源
最近更新 更多