我想要做的事情:
- 使用Python读取图片。
- 使用Scipy的ndimage.gaussian_filter()函数应用高斯滤波器。
- 显示滤波后的图像。
以下是我尝试运行的代码:
import cv2
from matplotlib import pyplot as plt
import scipy.ndimage as ndimage
img = cv2.imread('lena.png', 0)
img = ndimage.gaussian_filter(img, sigma=(5, 5, 0), order=0)
plt.imshow(img, cmap='gray', interpolation='bicubic')
plt.show()
问题是什么:
我遇到了以下错误:
RuntimeError: sequence argument must have length equal to input rank
完整的堆栈跟踪如下:
Traceback (most recent call last):
File "/Users/guest/stackoverflow.py", line 6, in <module>
img = ndimage.gaussian_filter(img, sigma=(5, 5, 0), order=0)
File "/Users/guest/anaconda/envs/MyEnv/lib/python3.5/site-packages/scipy/ndimage/filters.py", line 346, in gaussian_filter
sigmas = _ni_support._normalize_sequence(sigma, input.ndim)
File "/Users/sguest/anaconda/envs/MyEnv/lib/python3.5/site-packages/scipy/ndimage/_ni_support.py", line 65, in _normalize_sequence
raise RuntimeError(err)
RuntimeError: sequence argument must have length equal to input rank
这是我正在处理的图片: leng.png
img
是二维的,但你给了三个值,或者order
也必须有三个值。 - Cris Luengoimread
将图像转换为灰度。因此,img
是一个二维数组。 - Warren Weckesser