import cv2
import numpy as np
import matplotlib.pyplot as plt
o=cv2.imread("(1).png",0)
# 进行傅里叶变换
dft=cv2.dft(np.float32(o),flags=cv2.DFT_COMPLEX_OUTPUT)
# 进行低频位置移动到中心
dshift=np.fft.fftshift(dft)
# 找到行列的值
rs,cs=o.shape
# 计算中心的行和列
cr,cc=int(rs/2),int(cs/2)
# 计算掩膜生成一个行和列控制的,周围都设置成0中心的设置为1
mask=np.zeros((rs,cs,2),np.int8)
# 值越高,越清晰,值约低约模糊
mask[cr-80:cr+80,cc-80:cc+80]=1
# 淹膜和频谱图像进行乘法运算
md=dshift*mask
# 移动到左上角 逆傅里叶变换
imd =np.fft.ifftshift(md)
io=cv2.idft(imd)
io=cv2.magnitude(io[:,:,0],io[:,:,1])
plt.subplot(121)
plt.imshow(o,cmap="gray")
plt.title("origian")
plt.axis("off")
plt.subplot(122)
plt.imshow(io,cmap="gray")
plt.title("result")
plt.axis("off")
plt.show()