加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fft2.py 1.15 KB
一键复制 编辑 原始数据 按行查看 历史
fs 提交于 2023-06-14 14:21 . first commit
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取视频文件
cap=cv.VideoCapture('bike.mp4')
#循环播放视频
while cap.isOpened():
#逐帧读取
ret,frame=cap.read()
if not ret:
print("haven't read the frame")
break
#转换为灰度图
gray=cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
#获取傅里叶系数
fCoef=np.fft.fft2(gray)
#放大傅里叶系数获得振幅谱
amp_list=20*np.log(np.abs(fCoef))
#将低频移到中间
fCoef2=np.fft.fftshift(fCoef)
#获取振幅谱
amp_list2=20*np.log(np.abs(fCoef2))
#振幅谱的值域过大,超出了imshow函数的显示范围,使用cv.normalize函数将其归一化到0-255的范围内再进行显示
amp_list = cv.normalize(amp_list, None, 0, 255, cv.NORM_MINMAX, cv.CV_8U)
amp_list2 = cv.normalize(amp_list2, None, 0, 255, cv.NORM_MINMAX, cv.CV_8U)
cv.imshow('frame',gray)
cv.imshow('mg_spc',amp_list)
cv.imshow('mg_spc_shift',amp_list2)
#每隔1ms检查一次用户输入,如果按下'q'则退出循环
if cv.waitKey(1)==ord('q'):
break
cap.release()
cv.destroyAllWindows()
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化