原理见上一篇
import numpy as np
import cv2 as cv
import pyplot as plt
img=cv.imread('test.jpg',0)
dft=cv.dft(np.float32(img),flags=cv.DFT_COMPLEX_OUTPUT)
#进行傅里叶变换
dft_shift=np.fft.fftshift(dft)
#将低频部分放到图片中间
final_img=20*np.log(cv.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#使用cv2.magnitude将实部和虚部转换为实部,乘以20是为了使得结果更大
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.subplot(122)
plt.imshow(final_img, cmap='gray')
plt.show()
最终结果:
未解决的问题:
显示图像的时候第一次直接使用的是cv2.imshow(),但是最后结果却是
查了很多资料都没有相关的,有关python+opencv的傅里叶教程都使用的是pyplot