zl程序教程

您现在的位置是:首页 >  后端

当前栏目

在OpenCV里Numpy傅里叶变换

Opencvnumpy 变换 傅里叶
2023-09-14 09:10:33 时间

前面学习使用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([])
p