#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
#define CV_HAAR_SCALE_IMAGE 2
String face_cascade = "C:/opencv/sources/data/haarcascades/haarcascade_eye.xml";
String eye_cascade =
"C:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml";
CascadeClassifier face;
CascadeClassifier eye;
void FaceAndEyeDetect(Mat img) {
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
vector < Rect > face_pos;
face.detectMultiScale(gray, face_pos, 1.1, 2, 0 |
CASCADE_SCALE_IMAGE, Size(10, 10));
for (int i = 0; i < face_pos.size(); i++) {
rectangle(img, face_pos[i], Scalar(255, 0, 0), 2);
}
/*for (int i = 0; i < face_pos.size(); i++) {
vector < Rect > eye_pos;
Mat roi = gray(face_pos[i]);
eye.detectMultiScale(roi, eye_pos, 1.1, 2, 0
| CASCADE_SCALE_IMAGE, Size(10, 10));
for (int j = 0; j < eye_pos.size(); j++) {
Point center(face_pos[i].x + eye_pos[j].x + eye_pos[j].width * 0.5,
face_pos[i].y + eye_pos[j].y + eye_pos[j].height * 0.5);
int radius = cvRound((eye_pos[j].width + eye_pos[j].height) * 0.25);
circle(img, center, radius, Scalar(0, 0, 255), 2.8, 0);
}
}*/
namedWindow("얼굴 검출"); imshow("얼굴 검출", img);
}
int main() {
Mat f = imread
//("C:/Users/is7se/source/repos/OpencvStudy/OpencvStudy/img/test_nanami.jpg");
("C:/Users/is7se/source/repos/OpencvStudy/OpencvStudy/img/test_nanami2.png");
assert(f.data);
bool b1 = face.load(face_cascade);
bool b2 = eye.load(eye_cascade);
assert(b1 && b2);
FaceAndEyeDetect(f);
waitKey();
return 0;
}