python - 值错误 : Too many dimensions: 3 > 2

标签 python arrays scipy python-imaging-library

我尝试使用 scipy 调整图像大小,在我尝试保存图像之前一切似乎都正常。当我尝试保存图像时出现错误,您可以在标题中看到该错误。下面提供了完整的追溯。

import numpy as np
import scipy.misc
from PIL import Image

image_path = "img0.jpg"


def load_image(img_path):
    img = Image.open(img_path)
    img.load()
    data = np.asarray(img, dtype="int32")
    return data


def save_image(npdata, outfilename):
    img = Image.fromarray(np.asarray(np.clip(npdata, 0, 255), dtype="uint8"), "L")
    img.save(outfilename)

array_image = load_image(image_path)

array_resized_image = scipy.misc.imresize(array_image, (320, 240), interp='nearest', mode=None)

save_image(array_resized_image, "i1.jpg")

错误的完整回溯:

Traceback (most recent call last):
  File "D:/Python/Playground/resize image with scipy.py", line 26, in <module>
    save_image(array_resized_image, "i1.jpg")
  File "D:/Python/Playground/resize image with scipy.py", line 16, in save_image
    img = Image.fromarray(np.asarray(np.clip(npdata, 0, 255), dtype="uint8"), "L")
  File "C:\Anaconda2\lib\site-packages\PIL\Image.py", line 2154, in fromarray
    raise ValueError("Too many dimensions: %d > %d." % (ndim, ndmax))
ValueError: Too many dimensions: 3 > 2.

最佳答案

在执行 fromarray(... 'L') 之前不需要将其转换为二维数组吗?

您可以使用 scipy 函数来执行此操作,或者实际上更快,将 RGB 乘以因子。像这样

npdata = (npdata[:,:,:3] * [0.2989, 0.5870, 0.1140]).sum(axis=2)

关于python - 值错误 : Too many dimensions: 3 > 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841540/

相关文章:

python - 在另一个数组的条件下更改 numpy 数组

python - 如何将 Electron 用于后端带有 Python 的图像处理应用程序?

Python:将 wx.py.shell.Shell 插入单独的进程

c - 关于 C 语言中指针的相同输出

python-3.x - 使用 NetworkX 进行图形排列和旋转

python - curve_fit 似乎无法拟合高斯总和

python - 多元学生 t 分布与 python

python - 在验证和保存表单之前,如何从 ImageField 打开图像?

jquery - 将数组与 DIV 中的文本进行匹配

java arraylist 包含对象的类型