import cv2 as cv
import numpy as np
from timeit import default_timer
def fft(gray_img):
dft = cv.dft(np.float32(img), flags=cv.DFT_COMPLEX_OUTPUT)
dft_shift = dft # np.fft.fftshift(dft)
magnitude_spectrum = 20 * np.log(cv.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1]))
cv.normalize(magnitude_spectrum, magnitude_spectrum, 0, 255, cv.NORM_MINMAX)
magnitude_spectrum = np.uint8(magnitude_spectrum)
cv.imshow("mag", magnitude_spectrum)
# ret, thresh = cv.threshold(magnitude_spectrum, 0, 255, cv.THRESH_OTSU)
# cv.imshow("thresh", thresh)
rows, cols = gray_img.shape
# 将低频的信号设置为0
# 一般不使用矩阵窗口,而是使用高斯窗口
mask = np.full((rows, cols), fill_value=0, dtype=np.uint8)
ratio = 0.5
cv.ellipse(mask, (cols // 2, rows // 2), (int(ratio * cols), int(ratio * rows)), 0, 0, 360, 1, -1)
# crow, ccol = rows // 2, cols // 2
# dr, dc
OpenCV实现傅里叶滤波(个人笔记)
最新推荐文章于 2024-08-26 02:11:28 发布
本文详细记录了利用OpenCV库在Python中实现傅里叶变换和滤波的过程,包括图像的傅里叶变换、高通滤波与低通滤波的应用,旨在帮助读者理解并掌握这一图像处理技术。
摘要由CSDN通过智能技术生成