如何在Matplotlib中的动画图中计算和显示频率?

时间:2019-04-08 10:39:27

标签: python opencv matplotlib

我有一些使用opencv来计算运动的代码,我将其绘制成时间。我有一个拍打心脏细胞的视频,每次心脏细胞收缩时都会给我峰值,而我可以变成这样的频率。

enter image description here

我只有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()

0 个答案:

没有答案