All Projects → chrdiller → VideoMagnification

chrdiller / VideoMagnification

Licence: GPL-3.0 license
VideoMagnification - Magnify motions and detect heartbeats

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to VideoMagnification

Firmware Over The Air
graduation project of ITI, flashing a new firmware over the air for automotive industry
Stars: ✭ 18 (-21.74%)
Mutual labels:  qt-gui
RoboVision
Attempting to create a program capable of combining stereo video input , with motors and other sensors on a PC running linux , the target is embedded linux for use in a robot!
Stars: ✭ 21 (-8.7%)
Mutual labels:  v4l2
Gear Lib
Gear-Lib, C library for IOT Embedded Multimedia and Network
Stars: ✭ 2,381 (+10252.17%)
Mutual labels:  v4l2
AppImageUpdater
AppImage Updater for Humans built with QML/C++ with Qt5 ❤️.
Stars: ✭ 31 (+34.78%)
Mutual labels:  qt-gui
B23Downloader
下载B站 视频(投稿视频、番剧、电影、课程)、直播、漫画。(使用 Qt C++ 开发)
Stars: ✭ 337 (+1365.22%)
Mutual labels:  qt-gui
v4l2onvif
ONVIF server for V4L2 Devices
Stars: ✭ 83 (+260.87%)
Mutual labels:  v4l2
AlphaPlot
📈 Application for statistical analysis and data visualization which can generate different types of publication quality 2D and 3D plots with extensive visual customization.
Stars: ✭ 140 (+508.7%)
Mutual labels:  qcustomplot
JKQtExtras
a collection of different Qt4 & Qt5 widgets, I developed over the years
Stars: ✭ 34 (+47.83%)
Mutual labels:  qt-gui
RGBDAcquisition
A uniform library wrapper for input from V4L2,Freenect,OpenNI,OpenNI2,DepthSense,Intel Realsense,OpenGL simulations and other types of video and depth input..
Stars: ✭ 56 (+143.48%)
Mutual labels:  v4l2
libv4l2cpp
V4L2 C++ wrapper
Stars: ✭ 111 (+382.61%)
Mutual labels:  v4l2
qt5-tutorials
graphics dojo Qt5
Stars: ✭ 29 (+26.09%)
Mutual labels:  qt-gui
QSimpleScada
Qt based simple SCADA framework, with dashboard, static and dynamic components
Stars: ✭ 152 (+560.87%)
Mutual labels:  qt-gui
v4l2-framebuffer
Map frame from USB camera to Linux framebuffer
Stars: ✭ 43 (+86.96%)
Mutual labels:  v4l2
PySimpleGUI
Launched in 2018. It's 2022 and PySimpleGUI is actively developed & supported. Create complex windows simply. Supports tkinter, Qt, WxPython, Remi (in browser). Create GUI applications trivially with a full set of widgets. Multi-Window applications are also simple. 3.4 to 3.11 supported. 325+ Demo programs & Cookbook for rapid start. Extensive d…
Stars: ✭ 10,846 (+47056.52%)
Mutual labels:  qt-gui
SilentServer
Silent is very lightweight, high quality - low latency voice chat for gaming. The server runs on Windows and Linux.
Stars: ✭ 52 (+126.09%)
Mutual labels:  qt-gui
TRA-Ticket-Booker
(已不適用新版臺鐵訂票系統,且不再更新)台灣鐵路訂票應用程式(臺鐵 / 台鐵 / 訂單程票 / 訂來回票),基於 Selenium + PyQt4。
Stars: ✭ 26 (+13.04%)
Mutual labels:  qt-gui
v4l2web
V4L2 web interface
Stars: ✭ 20 (-13.04%)
Mutual labels:  v4l2
PiHueEntertainment
An application that can handle the Hue Entertainment Areas on a Raspberry Pi
Stars: ✭ 28 (+21.74%)
Mutual labels:  qt-gui
rtsp-video-server
RTSP video streaming server implementation based on Live555 and FFmpeg
Stars: ✭ 36 (+56.52%)
Mutual labels:  v4l2
V4L2-to-NDI
A video input (V4L2) to NDI converter that works with Raspberry Pi (32-bit and 64-bit), and Intel/AMD CPUs
Stars: ✭ 35 (+52.17%)
Mutual labels:  v4l2

VideoMagnification - Magnify motions and detect heartbeats

This application allows you to magnify motion and detect heartbeats from videos and webcam video streams. It is an implementation of Hao-Yu Wu, Michael Rubinstein, Eugene Shih, John Guttag, Frédo Durand, William T. Freeman: Eulerian Video Magnification for Revealing Subtle Changes in the World in C++11. It utilizes OpenCV 3.1 and QT 5.

Examples

The application supports video input from either a live webcam stream or a video file in any format OpenCV supports on your machine:

Video input and output

It allows you to magnify the video while adjusting all parameters described in the paper:

Video input and output

Furthermore, it can display time and frequency plots of the current signal and extract a heartbeat value:

Video input and output

Features

  • Use video input from webcams and video files
  • Experiment with color magnification (ideal temporal filtering) and motion magnification (IIR temporal filtering); all parameters including the number of processed layers and buffered seconds are customizable
  • Analyze the video stream to detect heartbeats
  • Write the current video stream to file or convert the whole input video
  • Experimental: Set camera parameters directly from within the application with V4L2

Prerequisites

You need a compiler that supports both C++11 and OpenMP. CMake version 3.1 or higher is also required.

Furthermore, this application depends on the following libraries:

  • OpenCV 3.1 (built from master at the OpenCV git repository as the packaged version includes GUI symbols that may conflict with the QT GUI) provides basic algorithms and datatypes
  • The QT framework in version 5 provides the necessary GUI features
  • QCustomPlot, a Qt C++ widget for plotting and data visualization. See http://www.qcustomplot.com/.
  • FFTW 3, the fastest fourier transform in the West (http://fftw.org)

Some additional notes if you are using Ubuntu:

  • Unfortunately, the packages available in Ubuntu 14.04 are too old to use with this application. As I could not find workarounds for all issues within reasonable time, only Ubuntu >= 15.10 is supported.
  • Apparently, qcustomplot has an issue that was solved in version 1.3.2 which is not available on Ubuntu prior to version 16.04. However, you can fix the issue manually by executing sudo sed -i "s/<QtPrintSupport>/<QtPrintSupport\/QtPrintSupport>/" /usr/include/qcustomplot.h after you installed the package from universe.

This application was developed on Arch Linux and tested on Arch Linux as well as Ubuntu 15.10 (However, as this project does not use any Linux-exclusive libraries, it should also work on Windows and Mac OSX)

Installation

  • Clone OpenCV 3.1, (optionally) checkout a stable tag (such as 3.1.0), disable GTK (as it conflicts with the QT GUI), then make and install to /opt/opencv (or any other path, but be sure to set this path in the project's CMakeLists.txt):
git clone https://github.com/itseez/opencv
cd opencv
git checkout 3.1.0
mkdir build && cd build
sed -i "s/\(OCV_OPTION(WITH_GTK .*$\)/OCV_OPTION(WITH_GTK \"Include GTK support\" OFF)/" ../CMakeLists.txt
cmake ..
make -j8
sudo make install DESTDIR=/opt/opencv
  • Install QT5: sudo apt install qt5-default on Ubuntu or sudo pacman -S qt5-base on Arch Linux

  • Install QCustomPlot: sudo apt install libqcustomplot-dev on Ubuntu from universe or qcustomplot-qt5 from the AUR on Arch Linux

  • Install FFTW3: sudo apt install libfftw3-dev on Ubuntu or sudo pacman -S fftw on Arch Linux

Compilation and Usage

Set this line in CMakeLists.txt to the path you installed OpenCV to (/opt/opencv/usr/local if you used DESTDIR=/opt/opencv before)

set(CUSTOM_OPENCV_PATH "/opt/opencv/usr/local")

If you are on Linux and want to try the experimental V4L2 interface which allows you to edit available camera parameters from within the application, set the option USE_V4L2 to ON in CMakeLists.txt.

Then you should be able to compile and run the application:

mkdir build && cd build
cmake ..
make
./VideoMagnification

License

This application is licensed under GPLv3.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].