У меня есть некоторый код, который использует 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()