代码拉取完成,页面将自动刷新
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()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。