python - 如何在 Matplotlib 的动画图中计算和显示频率?
问题描述
我有一些代码使用 opencv 来计算运动,并将其绘制到时间上。我有一个心脏细胞跳动的视频,每次心脏细胞收缩时都会给我一个峰值,我可以像这样变成频率。
我只有 2 周的编程经验,并且使我当前的代码查看多个教程并将代码混合在一起。我对目前所拥有的感到满意,但现在我完全迷失了,不知道从哪里开始。到目前为止,这是我的代码。
import numpy as np
import cv2
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
style.use('fivethirtyeight')
cap = cv2.VideoCapture(0)
fgbg = cv2.createBackgroundSubtractorMOG2(varThreshold=30,detectShadows=False)
plt.ion()
x_len = 60
y_range = [-2, 10]
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
xs = list(range(0,60))
ys = [0] * x_len
line, = ax.plot(xs, ys, color='k')
ax.set_ylim(y_range)
plt.title('Movement over Time')
plt.show()
def animate(i, ys):
ys.append(average)
ys = ys[-x_len:]
line.set_ydata(ys)
return line,
ani = animation.FuncAnimation(fig, animate, fargs=(ys,), interval=60, blit=False)
while True:
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('Original', frame)
cv2.imshow('Masked', fgmask)
average = (np.average(fgmask))
print(average)
plt.pause(0.00001)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
解决方案
推荐阅读
- c++ - C++ 多行#if
- excel - 图片.插入超链接
- java - foreach 循环上的 JAVA ClassCastException
- hybris - ProductCockpit 中的产品价格
- c# - 使用 ProtoBuf-Net 进行两组不同的序列化
- java - 我正在尝试使用 selenium 获取页面源,但它在 centos 中不起作用
- python - 在“单词查找”游戏中输入的代码输出不正确(生成随机单词)
- java - 如何将java时间戳转换为尊重时区的字符串,分辨率为纳秒
- python - 加速 Python 中的集成函数
- entity-framework-core - 如何接受具有更多层的 JSON