Я пытаюсь построить монитор сердечного ритма, где пользователь может нанести свой палец на камеру вспышкой и частота сердечных сокращений отображается ему.Монитор частоты сердечных сокращений с использованием OpenCV
На данный момент я снимаю видео с моего телефона, а затем обрабатываю его с помощью OpenCV на своем ноутбуке.
Шагов я Ниже приводится:
- захвата видео
- найти среднее красную плоскость значения для каждого кадра
- фильтровать данные так, что нежелательные пики удаляются
вычислить пиков, а затем отображать частоту сердечных сокращений
import numpy as np import cv2 #connecting with the captured video file taken from mobile cap = cv2.VideoCapture('heart_rate.mp4') #getting the number of frames no_of_frames = int(cap.get(7)) #assigning an initial zero red value for every frame red_plane = np.zeros(no_of_frames) #time_list is used for storing occurence time of each frame in the video time_list=[] t=0 #camera frame per second is 30 and so each frame acccurs after 1/30th second difference = 1/30 for i in range(no_of_frames): #reading the frame ret,frame = cap.read() length,width,channels = frame.shape #calculating average red value in the frame red_plane[i] = np.sum(frame[:,:,2])/(length*width) time_list.append(t) t = t+ difference cap.release()
Я не могу применить фильтр нижних частот, чтобы сгладить мои данные, а также как найти пики с помощью OpenCV. Любая помощь будет замечательной.
пожалуйста также Google для «FFT» и «эйлерового увеличения» – berak
Почему вы хотите фильтр низких частот? Хорошо использовать гауссовский фильтр для размытия кадров для удаления деталей и шума. Для пиков я бы рассматривал это после того, как проанализированы все кадры –
@tales_padua Я хочу фильтр нижних частот, чтобы сгладить график, так что нежелательные пики могут быть удалены и остались только желательные пики. Фактически я вычисляю одно красное значение, которое описывает отдельный кадр, и поэтому я нахожу красное значение для каждого кадра в своем видео, а затем я хочу найти пики – kkk