#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;
int main( ) {
double scale = 1.0 ;
VideoCapture cap( 0 ) ;
if ( ! cap.isOpened ( ) )
return - 1 ;
CascadeClassifier faceCascade;
faceCascade.load ( "C:/Users/TSUKAT/source/repos/opencv-3.4/data/haarcascades/haarcascade_frontalface_alt.xml" ) ;
for ( ;; ) {
/*Mat frame =
imread("C:/Users/TSUKAT/source/repos/ConsoleApplication3/putin.jpg", IMREAD_COLOR);*/
Mat frame;
cap >> frame;
Mat grayscale;
cvtColor( frame, grayscale, COLOR_BGR2GRAY) ;
resize(
grayscale, grayscale,
Size( grayscale.size ( ) .width / scale, grayscale.size ( ) .height / scale) ) ;
vector< Rect> faces;
faceCascade.detectMultiScale ( grayscale, faces, 1.1 , 3 , 0 , Size( 30 , 30 ) ) ;
for ( Rect area : faces) {
Scalar drawColor = Scalar( 255 , 0 , 0 ) ;
rectangle( frame, Point( cvRound( area.x * scale) , cvRound( area.y * scale) ) ,
Point( cvRound( ( area.x + area.width - 1 ) * scale) ,
cvRound( ( area.y + area.height - 1 ) * scale) ) ,
drawColor) ;
}
imshow( "webcam frame" , frame) ;
if ( waitKey( 30 ) >= 0 ) {
break ;
}
}
return 0 ;
}
I2luY2x1ZGUgIm9wZW5jdjIvaGlnaGd1aS5ocHAiCiNpbmNsdWRlICJvcGVuY3YyL2ltZ3Byb2MuaHBwIgojaW5jbHVkZSAib3BlbmN2Mi9vYmpkZXRlY3QuaHBwIgojaW5jbHVkZSAib3BlbmN2Mi92aWRlb2lvLmhwcCIKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgY3Y7CgppbnQgbWFpbigpIHsKICBkb3VibGUgc2NhbGUgPSAxLjA7CgogIFZpZGVvQ2FwdHVyZSBjYXAoMCk7CiAgaWYgKCFjYXAuaXNPcGVuZWQoKSkKICAgIHJldHVybiAtMTsKCiAgQ2FzY2FkZUNsYXNzaWZpZXIgZmFjZUNhc2NhZGU7CiAgZmFjZUNhc2NhZGUubG9hZCgiQzovVXNlcnMvVFNVS0FUL3NvdXJjZS9yZXBvcy9vcGVuY3YtMy40L2RhdGEvaGFhcmNhc2NhZGVzL2hhYXJjYXNjYWRlX2Zyb250YWxmYWNlX2FsdC54bWwiKTsKCiAgCgogIGZvciAoOzspIHsKICAgIC8qTWF0IGZyYW1lID0KICAgICAgICBpbXJlYWQoIkM6L1VzZXJzL1RTVUtBVC9zb3VyY2UvcmVwb3MvQ29uc29sZUFwcGxpY2F0aW9uMy9wdXRpbi5qcGciLCBJTVJFQURfQ09MT1IpOyovCiAgICBNYXQgZnJhbWU7CiAgICBjYXAgPj4gZnJhbWU7CgogICAgTWF0IGdyYXlzY2FsZTsKICAgIGN2dENvbG9yKGZyYW1lLCBncmF5c2NhbGUsIENPTE9SX0JHUjJHUkFZKTsKICAgIHJlc2l6ZSgKICAgICAgICBncmF5c2NhbGUsIGdyYXlzY2FsZSwKICAgICAgICBTaXplKGdyYXlzY2FsZS5zaXplKCkud2lkdGggLyBzY2FsZSwgZ3JheXNjYWxlLnNpemUoKS5oZWlnaHQgLyBzY2FsZSkpOwoKICAgIHZlY3RvcjxSZWN0PiBmYWNlczsKICAgIGZhY2VDYXNjYWRlLmRldGVjdE11bHRpU2NhbGUoZ3JheXNjYWxlLCBmYWNlcywgMS4xLCAzLCAwLCBTaXplKDMwLCAzMCkpOwoKICAgICBmb3IgKFJlY3QgYXJlYSA6IGZhY2VzKSB7CiAgICAgIFNjYWxhciBkcmF3Q29sb3IgPSBTY2FsYXIoMjU1LCAwLCAwKTsKICAgICAgcmVjdGFuZ2xlKGZyYW1lLCBQb2ludChjdlJvdW5kKGFyZWEueCAqIHNjYWxlKSwgY3ZSb3VuZChhcmVhLnkgKiBzY2FsZSkpLAogICAgICAgICAgICAgICAgUG9pbnQoY3ZSb3VuZCgoYXJlYS54ICsgYXJlYS53aWR0aCAtIDEpICogc2NhbGUpLAogICAgICAgICAgICAgICAgICAgICAgY3ZSb3VuZCgoYXJlYS55ICsgYXJlYS5oZWlnaHQgLSAxKSAqIHNjYWxlKSksCiAgICAgICAgICAgICAgICBkcmF3Q29sb3IpOwogICAgfQogICAgaW1zaG93KCJ3ZWJjYW0gZnJhbWUiLCBmcmFtZSk7CiAgICBpZiAod2FpdEtleSgzMCkgPj0gMCkgewogICAgICBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIDA7Cn0K