我想做的是:
下面是我试图运行的代码:
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
发布于 2018-02-26 04:45:34
根据堆栈跟踪,“序列参数必须长度等于输入秩”的错误由行img = ndimage.gaussian_filter(img, sigma=(5, 5, 0), order=0)抛出。
sigma是一个序列参数,您需要为每个图像维度提供一个值(这是错误消息中提到的“输入等级”)。
显然,img = cv2.imread('lena.png', 0)语句返回一个2D数组( 0参数告诉imread将图像转换为灰色值)。因此,gaussian_filter需要sigma的2个值,而不是3个。
https://stackoverflow.com/questions/48975480
复制相似问题