ValueError: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 个回答
1
dx, dy = array.shape
array.shape 返回的不止两个值,这说明它有超过两个维度。
原因如下:
http://www.mathworks.de/de/help/matlab/ref/imread.html
“返回值 A 是一个包含图像数据的数组。如果文件包含的是灰度图像,A 就是一个 M 行 N 列的数组。如果文件包含的是真彩色图像,A 就是一个 M 行 N 列再加上 3 的数组,也就是 M-by-N-by-3。对于使用 CMYK 色彩空间的彩色 TIFF 文件,A 是一个 M 行 N 列再加上 4 的数组,也就是 M-by-N-by-4。有关更多信息,请参见格式特定信息部分的 TIFF。”
第三个维度表示红色、绿色和蓝色的值。