Merge branch 'main' into Signal2
This commit is contained in:
commit
59db00254d
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
all: ppg
|
||||
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 -I/usr/include/opencv4/opencv -I/usr/include/opencv4
|
||||
clean:
|
||||
rm *.o
|
||||
rm *.exe
|
||||
56
ppg.cpp
56
ppg.cpp
|
|
@ -1,7 +1,53 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
#include "opencv2/opencv.hpp"
|
||||
#include "opencv2/videoio.hpp"
|
||||
#include "opencv2/highgui.hpp"
|
||||
|
||||
const int FPS = 30;
|
||||
|
||||
|
||||
bool isDiscardData = true;
|
||||
int countDiscard = 0;
|
||||
const int DISCARD_DURATION = 10;
|
||||
|
||||
int main() {
|
||||
cout << "Hello World!";
|
||||
return 0;
|
||||
}
|
||||
cv::VideoCapture cap;
|
||||
cap.open(0);
|
||||
cv::CascadeClassifier faceDetector;
|
||||
if( !faceDetector.load("./haarcascade_frontalface_alt.xml"))
|
||||
{
|
||||
std::cerr << "[ERROR] Unable to load face cascade" << std::endl;
|
||||
return -1;
|
||||
};
|
||||
cv::Rect foreheadROI;
|
||||
if (!cap.isOpened()) {
|
||||
std::cerr << "[ERROR] Unable to open camera!" << std::endl;
|
||||
return -2;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
if(isDiscardData){
|
||||
countDiscard++;
|
||||
if(countDiscard == DISCARD_DURATION*FPS)
|
||||
isDiscardData = false;
|
||||
}
|
||||
else{
|
||||
cv::Mat frame;
|
||||
cap.read(frame);
|
||||
if (frame.empty()) {
|
||||
std::cerr << "[ERROR] blank frame grabbed" << std::endl;
|
||||
break;
|
||||
}
|
||||
std::vector<cv::Rect> faceRectangles;
|
||||
faceDetector.detectMultiScale(frame, faceRectangles, 1.1, 3, 0,cv::Size(20, 20));
|
||||
foreheadROI = faceRectangles[0];
|
||||
foreheadROI.height *= 0.3;
|
||||
cv::rectangle(frame, faceRectangles[0], cv::Scalar(0, 0, 255), 1, 1, 0);
|
||||
cv::rectangle(frame, foreheadROI, cv::Scalar(0, 255, 0), 1, 1, 0);
|
||||
cv::imshow("Color", frame);
|
||||
if (cv::waitKey(1000.0 / FPS) >= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue