我正在运行以下脚本,我收到错误:
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)
我知道有太多关于此的话题,但仍然无法修复它。
答案 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;
第三个维度是红色,绿色和蓝色值。