Amazing-Python-Scripts
44 строки · 1.4 Кб
1import numpy as np2from matplotlib import pyplot as plt3import cv24import io5import time6# Camera stream
7cap = cv2.VideoCapture(0)8cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)9cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1280)10cap.set(cv2.CAP_PROP_FPS, 30)11# Video stream (optional, not tested)
12# cap = cv2.VideoCapture("video.mp4")
13# Image crop
14x, y, w, h = 800, 500, 100, 10015x, y, w, h = 950, 300, 100, 10016heartbeat_count = 12817heartbeat_values = [0]*heartbeat_count18heartbeat_times = [time.time()]*heartbeat_count19# Matplotlib graph surface
20fig = plt.figure()21ax = fig.add_subplot(111)22while True:23# Capture frame-by-frame24ret, frame = cap.read()25img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)26crop_img = img[y:y + h, x:x + w]27# Update the data28heartbeat_values = heartbeat_values[1:] + [np.average(crop_img)]29heartbeat_times = heartbeat_times[1:] + [time.time()]30# Draw matplotlib graph to numpy array31ax.plot(heartbeat_times, heartbeat_values)32fig.canvas.draw()33plot_img_np = np.fromstring(fig.canvas.tostring_rgb(),34dtype=np.uint8, sep='')35plot_img_np = plot_img_np.reshape(36fig.canvas.get_width_height()[::-1] + (3,))37plt.cla()38# Display the frames39cv2.imshow('Crop', crop_img)40cv2.imshow('Graph', plot_img_np)41if cv2.waitKey(1) & 0xFF == ord('q'):42break43cap.release()44cv2.destroyAllWindows()45