我正在尝试使用gabor过滤器来增强图像。我从谷歌上获得了一个代码片段,我正在处理它给了我一个不熟悉的错误请指导我通过下面附带的代码以便错误可以纠正。
给我的错误是
def gabor(im, W, angles):
x, y = im.size
im_load = im.load()
freqs = frequency.freq(im, W, angles)
print "computing local ridge frequency done"
gauss = utils.gauss_kernel(3)
utils.apply_kernel(freqs, gauss)
for i in range(1, x / W - 1):
for j in range(1, y / W - 1):
kernel = gabor_kernel(W, angles[i][j], freqs[i][j])
for k in range(0, W):
for l in range(0, W):
im_load[i * W + k, j * W + l] = utils.apply_kernel_at(lambda x, y: im_load[x, y],kernel,i * W + k,j * W + l)
return im
迭代在第四个for循环后顺利进行,它在
中显示错误im_load[i * W + k, j * W + l] = utils.apply_kernel_at(lambda x, y: im_load[x, y],kernel,i * W + k,j * W + l)
错误就像这样说
im_load[i * W + k, j * W + l] = utils.apply_kernel_at(lambda x, y: im_load[x, y],kernel,i * W + k,j * W + l)
SystemError: new style getargs format but argument is not a tuple
更新
经过几次谷歌搜索,我找到了这个答案 似乎代码永远不会在我正在使用的python 2.7.10上运行 它适用于2.7.6
如何在python 2.7.10中使其工作
安装python 2.7.6后更新
我在安装python 2.7.6之后尝试了代码,如堆栈溢出的答案中所述,但仍然存在错误。 现在该怎么办?
经过长时间的代码测试后更新
我已深入了解代码,了解其工作发现错误代码,但我无法纠正错误
错误属于 apply_kernel_at
功能def apply_kernel_at(get_value, kernel, i, j):
kernel_size = len(kernel)
result = 0
for k in range(0, kernel_size):
for l in range(0, kernel_size):
pixel = get_value(i + k - kernel_size / 2, j + l - kernel_size / 2)
result += pixel * kernel[k][l]
#print pixel
return result
返回单个值结果,但使用函数调用的行确实需要两个值
im_load[i * W + k, j * W + l]=utils.apply_kernel_at(lambda x, y: im_load[x, y],kernel,i * W + k,j * W + l)
我不确定我的发现是否正确
任何帮助将不胜感激。