{"id":17358654,"url":"https://github.com/prouast/heartbeat","last_synced_at":"2025-05-15T12:03:59.651Z","repository":{"id":44054630,"uuid":"64693404","full_name":"prouast/heartbeat","owner":"prouast","description":"Desktop implementation of Remote Photoplethysmography – Measuring heart rate using facial video.","archived":false,"fork":false,"pushed_at":"2025-03-04T06:24:50.000Z","size":83666,"stargazers_count":566,"open_issues_count":7,"forks_count":144,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-11T19:13:34.032Z","etag":null,"topics":["face","heart-rate","heart-rate-measurement","heart-rate-monitor","pulse","remote-photoplethysmography","remote-sensing","rppg","video","video-processing","vital-signs"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prouast.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-01T18:56:04.000Z","updated_at":"2025-04-11T17:12:52.000Z","dependencies_parsed_at":"2025-04-11T16:52:38.317Z","dependency_job_id":"1428fdaf-7354-445f-9d7e-5defd9f629a4","html_url":"https://github.com/prouast/heartbeat","commit_stats":{"total_commits":44,"total_committers":5,"mean_commits":8.8,"dds":"0.13636363636363635","last_synced_commit":"6cb5227abb62ad2b8bad588453bc91ea52ec27d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prouast%2Fheartbeat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prouast%2Fheartbeat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prouast%2Fheartbeat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prouast%2Fheartbeat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prouast","download_url":"https://codeload.github.com/prouast/heartbeat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337612,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["face","heart-rate","heart-rate-measurement","heart-rate-monitor","pulse","remote-photoplethysmography","remote-sensing","rppg","video","video-processing","vital-signs"],"created_at":"2024-10-15T19:06:22.629Z","updated_at":"2025-05-15T12:03:54.640Z","avatar_url":"https://github.com/prouast.png","language":"C++","funding_links":[],"categories":["\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++"],"sub_categories":[],"readme":"# Heartbeat: Measuring heart rate using remote photoplethysmography (rPPG)\n\nLooking for more powerful and up-to-date rPPG tools?  \nCheck out our latest libraries and apps!\n\n| 📌 Tool | ⚡ Features | 🔗 Get Started |\n|---------|-----------|---------------|\n| **[Python Library](https://github.com/Rouast-Labs/vitallens-python)** | G, POS, CHROM, VitalLens API | [GitHub](https://github.com/Rouast-Labs/vitallens-python) |\n| **[JavaScript Library](https://github.com/Rouast-Labs/vitallens.js)** | G, POS, CHROM, VitalLens API | [GitHub](https://github.com/Rouast-Labs/vitallens.js) |\n| **[iOS App](https://apps.apple.com/us/app/vitallens/id6472757649)** | Live HR + RR Estimation | [App Store](https://apps.apple.com/us/app/vitallens/id6472757649) |\n| **[Rouast Labs](https://rouast.com/api)** | More about our research \u0026 tech | [Website](https://rouast.com) |\n\nThis is a simple implementation of rPPG, a way to measure heart rate without skin contact. It uses a video recording or live feed of the face to analyse subtle changes in skin color.\n\nHere's how it works:\n\n  - The face is detected and continuously tracked\n  - Signal series is obtained by determining the facial color in every frame\n  - Heart rate is estimated using frequency analysis and filtering of the series\n\nIf you are interested in the specifics, feel free to have a read of my publications on the topic:\n  - [Remote Photoplethysmography: Evaluation of Contactless Heart Rate Measurement in an Information Systems Setting][aitic]\n  - [Using Contactless Heart Rate Measurements for Real-Time Assessment of Affective States][gmunden]\n  - [Remote heart rate measurement using low-cost RGB face video: A technical literature review][fcs]\n\nSee also my minimal [JavaScript implementation](https://github.com/prouast/heartbeat-js) and [Browser Demo](https://prouast.github.io/heartbeat-js/).\n\n### Demo\n\n* [Real-time rPPG in action][video1]\n* [Offline rPPG With physiological baseline measurements][video2]\n\n### Dependencies\n\nThe following libraries are required to run Heartbeat:\n\n* [OpenCV]\n\nThey must be installed on the system such that headers and libraries are found on the compiler's standard search path.\n\n### Installation\n\nFor building a Makefile is available that works on macOS:\n\n```sh\n$ make\n```\n\nAlternative compilation for Ubuntu. Works with opencv 3.1:\n\n```sh\n$ g++ -std=c++11 Heartbeat.cpp opencv.cpp RPPG.cpp `pkg-config --cflags --libs opencv` -o Heartbeat\n```\n\n### Settings\n\nAfter building, the app can be run via\n\n```\n$ ./Heartbeat\n```\n\nSeveral command line arguments are available:\n\n| Argument | Options | Description |\n| --- | --- | --- |\n| -i | Filepath to input video | Omit flag to use webcam |\n| -rppg | g, pca (default: g) | Specify rPPG algorithm variant - only green channel or rgb channels with pca |\n| -facedet | haar, deep (default: haar) | Specify face detection classifier - Haar cascade or deep neural network |\n| -r | Re-detection interval (default: 1 s) | Interval for face re-detection; tracking is used frame-to-frame |\n| -f | Sampling frequency (default: 1 Hz) | Frequency for heart rate estimation |\n| -max | default: 5 | Maximum size of signal sliding window |\n| -min | default: 5 | Minimum size of signal sliding window |\n| -gui | true, false (default: true) | Display the GUI |\n| -log | true, false (default: false) | Detailed logging |\n| -ds | default: 1 | If using video from file: Downsample by using every ith frame |\n\nLicense\n----\n\nGPL-3.0\n\n[//]: # (These are reference links used in the body of this note and get stripped out when the markdown processor does its job. There is no need to format nicely because it shouldn't be seen. Thanks SO - http://stackoverflow.com/questions/4823468/store-comments-in-markdown-syntax)\n\n   [aitic]: \u003chttps://www.rouast.com/pdf/rouast2016remote_b.pdf\u003e\n   [fcs]: \u003chttps://www.researchgate.net/profile/Raymond_Chiong/publication/306285292_Remote_heart_rate_measurement_using_low-cost_RGB_face_video_A_technical_literature_review/links/58098ac808ae1c98c252637d.pdf\u003e\n   [gmunden]: \u003chttp://link.springer.com/chapter/10.1007/978-3-319-41402-7_20\u003e\n   [OpenCV]: \u003chttp://opencv.org/downloads.html\u003e\n   [ffmpeg]: \u003chttps://ffmpeg.org/download.html\u003e\n   [video1]: \u003chttps://www.youtube.com/watch?v=D_KYv7pXAvQ\u003e\n   [video2]: \u003chttps://www.youtube.com/watch?v=4RKor-O5bQ8\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprouast%2Fheartbeat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprouast%2Fheartbeat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprouast%2Fheartbeat/lists"}