#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() { 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 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; }