python-opencv实现低通滤波
import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
def read_img(img_7_path):
img=cv2.imread(img_7_path,0)
dft=cv2.dft(np.float32(img),flags=cv2.DFT_COMPLEX_OUTPUT)
dftshift=np.fft.fftshift(dft)
rows,cols=img.shape
crow,ccol=int(rows/2),int(cols/2)
mask=np.zeros((rows,cols,2),np.uint8)
mask[crow-30:crow+30,ccol-30:ccol+30]=1
fshit=dftshift*mask
ishit=np.fft.ifftshift(fshit)
iImg=cv2.idft(ishit)
iImg=cv2.magnitude(iImg[:,:,0],iImg[:,:,1])
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('orignal'), plt.axis('off')
plt.subplot(122),plt.imshow(iImg,cmap='gray')
plt.title('inverse'),plt.axis('off')
plt.show()
if __name__ == '__main__':
work_path = os.getcwd()
data_path = os.path.join(work_path, 'data')
img_7_path = os.path.join(data_path, '7.jpg')
read_img(img_7_path)