This 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.
Here's how it works:
- The face is detected and continuously tracked
- Signal series is obtained by determining the facial color in every frame
- Heart rate is estimated using frequency analysis and filtering of the series
If you are interested in the specifics, feel free to have a read of our publications on the topic:
- Remote Photoplethysmography: Evaluation of Contactless Heart Rate Measurement in an Information Systems Setting
- Using Contactless Heart Rate Measurements for Real-Time Assessment of Affective States
- Remote heart rate measurement using low-cost RGB face video: A technical literature review
https://go.yuri.at/streaming-ffmpeg-with-nodejs-on-web-sockets-to-html/
The following libraries are required to run HeartBeat:
- OpenCV
- [G3Log] - needs to be installed
They must be installed on the system such that headers and libraries are found on the compiler's standard search path.
Compile the source code for your system, providing a number of required linker flags. This works with opencv 3.4.1 on macOS:
$ g++ -std=c++11 -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_objdetect -lopencv_video -lopencv_videoio -lavcodec ArgParser.cpp opencv.cpp RPPG.cpp Baseline.cpp -o ArgParser
Alternative compilation for Ubuntu. Works with opencv 3.1:
$ g++ -std=c++11 ArgParser.cpp opencv.cpp RPPG.cpp Baseline.cpp `pkg-config --cflags --libs opencv` -o ArgParser
or using CMake
mkdir build
cmake ..
make
GPL-3.0