2017-09-24 17 views
-1

私はPythonでコードを書いています。コンパイル時にガウスローパスフィルタを実装するためのOpencvは、14行目の14行目で '関数に代入できません。根。関数呼び出しに代入することはできません

`import cv2 
import numpy as np 
from math import sqrt 
img = cv2.imread('polys.jpg',0) 
f = np.fft.fft2(img) 
fshift = np.fft.fftshift(f) 
magnitude_spectrum = 20*np.log(np.abs(fshift)) 
m, n = img.shape 
m2,n2 = m/2 , n/2 
d=np.zeros((m,n)) 
for u in range(m): 
for v in range(n): 
    r=((u-m2)*(u-m2))+((v-n2)*(v-n2)) 
    d(u,v)=sqrt(r) 
    d(u,v)=int(d(u,v)) 
    if d(u,v)>10: 
     h(u,v)=0 
    elif d(u,v)<=10: 
     h(u,v)= math.exp(-(d(u,v)*d(u,v))/(2*10*10)) 

result=h*fshift  
f_ishift = np.fft.ifftshift(result) 
img_back = np.fft.ifft2(f_ishift) 
img_back = np.abs(img_back) 


cv2.imshow('dft',img_back) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

`

+0

私はそのわずかのコードの貼り付けの問題を推測するが、私はので、インデント二 'for'ループのインデントエラーが発生します。 – cdarke

答えて

2

置き換えます

d(u, v) = sqrt(r) 

で:

d[u, v] = sqrt(r) 

d(u, v)式がスローになります。

TypeError: 'numpy.ndarray' object is not callable

しかし、Pythonインタプリタがf() = xを見て、投げる前に:

SyntaxError: can't assign to function call

+0

それは問題を解決した –

関連する問題