在OpenCV里Numpy傅里叶变换

前面学习使用OpenCV里的函数实现傅里叶变换,其实Numpy里也有相应的变换,它的变换与Matlab更加接近,如果你想从matlab代码转换过来,使用它可能更加容易一些。

好吧,理论就不多说了,直接来看例子:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import numpy as np
import cv2
from matplotlib import pyplot as plt

#读取图片
img = cv2.imread('rose1.png',cv2.IMREAD_GRAYSCALE)

f = np.fft.fft2(img)#傅里叶变换
fshift = np.fft.fftshift(f)#频点移到中心
magnitude_spectrum = 20*np.log(np.abs(fshift))

#逆变换
rows, cols = img.shape
crow,ccol = rows//2 , cols//2
fshift[crow-30:crow+31, ccol-30:ccol+31] = 0 #高通滤波
f_ishift = np.fft.ifftshift(fshift)#频点从中心移回到原点
img_back = np.fft.ifft2(f_ishift)#傅里叶逆变换
img_back = np.real(img_back)

plt.subplot(131),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([]

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读