Merge branch 'develop' into main
This commit is contained in:
commit
905ddc87ed
|
|
@ -1,3 +1,5 @@
|
|||
# Lab1_PhotoPlethysmoGraphy
|
||||
|
||||
The best implementation of PPG
|
||||
|
||||
To note: the first push were made under the wrong username
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
4
makefile
4
makefile
|
|
@ -1,7 +1,7 @@
|
|||
all: ppg
|
||||
g++ ppg.o -o ppg.exe
|
||||
g++ ppg.o -o ppg.exe -L/usr/lib/x86_64-linux-gnu/ -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core
|
||||
ppg: ppg.cpp
|
||||
g++ -c ppg.cpp
|
||||
g++ -c ppg.cpp -I/usr/include/opencv4/opencv -I/usr/include/opencv4
|
||||
clean:
|
||||
rm *.o
|
||||
rm *.exe
|
||||
|
|
|
|||
69
ppg.cpp
69
ppg.cpp
|
|
@ -1,7 +1,66 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
#include "opencv2/opencv.hpp"
|
||||
#include "opencv2/videoio.hpp"
|
||||
#include "opencv2/highgui.hpp"
|
||||
|
||||
int main() {
|
||||
cout << "Hello World!";
|
||||
return 0;
|
||||
#include <iostream>
|
||||
|
||||
const int FPS = 30;
|
||||
bool isDiscardData = true;
|
||||
int countDiscard = 0;
|
||||
const int DISCARD_DURATION = 5;
|
||||
|
||||
int main()
|
||||
{
|
||||
cv::VideoCapture cap;
|
||||
cap.open(0);
|
||||
if (!cap.isOpened())
|
||||
{
|
||||
std::cerr << "[ERROR] Unable to open camera!" << std::endl;
|
||||
return -2;
|
||||
}
|
||||
//If Haard Cascade not found: error
|
||||
cv::CascadeClassifier faceDetector;
|
||||
if( !faceDetector.load("./haarcascade_frontalface_alt.xml"))
|
||||
{
|
||||
std::cerr << "[ERROR] Unable to load face cascade" << std::endl;
|
||||
return -1;
|
||||
};
|
||||
|
||||
while (true)
|
||||
{
|
||||
if (isDiscardData)
|
||||
{
|
||||
countDiscard++;
|
||||
if (countDiscard == DISCARD_DURATION*FPS)
|
||||
isDiscardData = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// create a matrix to store the image from the cam
|
||||
cv::Mat frame;
|
||||
// wait for a new frame from camera and store it into 'frame'
|
||||
cap.read(frame);
|
||||
// check if we succeeded
|
||||
if (frame.empty())
|
||||
{
|
||||
std::cerr << "[ERROR] blank frame grabbed" << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
//Draw Rectangle around the face
|
||||
std::vector<cv::Rect> faceRectangles;
|
||||
faceDetector.detectMultiScale(frame, faceRectangles, 1.1, 3, 0,
|
||||
cv::Size(20, 20));
|
||||
cv::rectangle(frame, faceRectangles[0], cv::Scalar(0, 0, 255), 1, 1, 0);
|
||||
//Reduce to ROI
|
||||
cv::Rect foreheadROI;
|
||||
foreheadROI = faceRectangles[0];
|
||||
foreheadROI.height *= 0.5;
|
||||
|
||||
cv::imshow("Your Face PLS", frame);
|
||||
if (cv::waitKey(1000.0/FPS) >= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue