Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 值错误:维度太多:3>;2._Python_Arrays_Scipy_Python Imaging Library - Fatal编程技术网

Python 值错误:维度太多:3>;2.

Python 值错误:维度太多:3>;2.,python,arrays,scipy,python-imaging-library,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.as

我尝试用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.
回溯(最近一次呼叫最后一次):
文件“D:/Python/playway/resize image with scipy.py”,第26行,in
保存图像(数组大小调整后的图像,“i1.jpg”)
保存图像中第16行的文件“D:/Python/playdy/resize image with scipy.py”
img=Image.fromarray(np.asarray(np.clip(npdata,0255),dtype=“uint8”),“L”)
文件“C:\Anaconda2\lib\site packages\PIL\Image.py”,第2154行,在fromarray中
raise VALUERROR(“维度太多:%d>%d.%(ndim,ndmax))
ValueError:维度太多:3>2。

在执行fromarray(…'L')之前,是否需要将其转换为二维数组

您可以使用scipy函数来实现这一点,或者,实际上更快,将RGB乘以因子。像这样

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

array\u resized\u image
的形状为
(320240,3)
-三维,因为红色、绿色和蓝色分量是以这种方式存储的。您可以使用
scipy.misc.imread
scipy.misc.imsave
更方便地处理文件加载和存储,因此您的示例可以归结为:

import scipy.misc

image_path = "img0.jpg"

array_image = scipy.misc.imread(image_path)
array_resized_image = scipy.misc.imresize(array_image, (320, 240), interp='nearest', mode=None)
scipy.misc.imsave("i1.jpg", array_resized_image)

array\u resized\u image.shape(do
print(array\u resized\u image.shape)
?无法重现错误,您正在运行什么版本?当您使用
int32
打开图像,然后将其存储到
uint8
,您期望得到什么?@Günther-Jena array的值:(320L、240L、3L)@你是说scipy版本吗?我不知道它内置在Anaconda 2中。我运行print scipy。它返回0.16.0。这使彩色图像变成灰色。当我阅读原始示例时,它不是作者想要的?显然不是…但是错误的原因是试图使用PIL.image.fromarray(a,'L'))关于a.shape(H,W,3)而不是s.shape(H,W),所以我想如果有人在谷歌上搜索“ValueError:太多维度:3>2”,他们可能也会很高兴找到我的解释!!