ValueError:在python中解压缩的值太多了

时间:2014-07-16 09:00:39

标签: python

我正在运行以下脚本,我收到错误:

Traceback (most recent call last): 
File "C:/Users/me/PycharmProjects/MySmplePythonApplication/src/Test2.py", line 22, in <module> print smooth(array) 
File "C:/Users/me/PycharmProjects/MySmplePythonApplication/src/Test2.py", line 10, in smooth dx, dy= array.shape 
ValueError: too many values to unpack

代码:

import math
import numpy as np
from PIL import Image

array = np.array(Image.open('noisy.tif'))

#Apply a 3x3 mean filter to my image array.

def smooth(array, window=3.0):
    dx, dy = array.shape
    new_array = np.copy(array)
    edgex = int(math.floor(window / 2.0))
    edgey = int(math.floor(window / 2.0))

    for i in range(dx):
        for j in range(dy):
            window_array = array[max(i - edgex, 0):min(i + edgex + 1, dx),
                                 max(j - edgey, 0):min(j + edgey + 1, dy)]
            new_array[i, j] = window_array.mean()
    return new_array

print smooth(array)

我知道有太多关于此的话题,但仍然无法修复它。

1 个答案:

答案 0 :(得分:0)

dx, dy = array.shape

array.shape返回的值超过2个,因此维度超过2个。

原因如下:

http://www.mathworks.de/de/help/matlab/ref/imread.html

&#34;返回值A是包含图像数据的数组。如果文件包含灰度图像,则A是M-by-N阵列。如果文件包含真彩色图像,则A是M×by-by-3阵列。对于包含使用CMYK颜色空间的彩色图像的TIFF文件,A是M×by-by-4阵列。有关详细信息,请参阅格式特定信息部分中的TIFF。&#34;

第三个维度是红色,绿色和蓝色值。