# include<opencv2\opencv.hpp>
# include <iostream>
using namespace std;
using namespace cv;
CascadeClassifier face_classifier;
CascadeClassifier eye_classifier;
string facefile = "F:/opencv4.0.1/opencv/build/etc/haarcascades/haarcascade_frontalface_alt.xml";
string LBPfacefile = "F:/opencv4.0.1/opencv/build/etc/lbpcascades/lbpcascade_frontalface.xml";
string eyefile = "F:/opencv4.0.1/opencv/build/etc/haarcascades/haarcascade_eye.xml";
int main(int argc, char** argv) {
//图片中
/*if (!face_classifier.load(LBPfacefile)) {
cout << "can't load face featrue data...";
return -1;
}
Mat src, dst,gray_src;
src = imread("E:/tuku/text1.jpg");
if (src.empty()) {
cout << "can't find this picture...";
return -1;
}
imshow("input", src);
cvtColor(src, gray_src, COLOR_BGR2GRAY);
equalizeHist(gray_src, gray_src);
vector<Rect> faces;
double t1 = getTickCount();
face_classifier.detectMultiScale(gray_src, faces, 1.1, 3, 0, Size(24, 24));
double time = (getTickCount() - t1) / getTickFrequency();
printf("time:%f", time);
for (size_t t = 0; t < faces.size(); t++) {
rectangle(src, faces[t], Scalar(0, 0, 255), 2, 8, 0);
}
imshow("faces detect Image", src);*/
//视频中
if (!face_classifier.load(LBPfacefile)) {
cout << "can't load face featrue data...";
return -1;
}
namedWindow("output", 1);
VideoCapture capture;
Mat gray;
Mat frame;
vector<Rect> faces;
capture.open("E:/tuku/text.mp4");
while (capture.read(frame)) {
cvtColor(frame, gray, COLOR_BGR2GRAY);
equalizeHist(gray, gray);
face_classifier.detectMultiScale(gray, faces, 1.2, 3, 0, Size(30, 30));
for (size_t t = 0; t < faces.size(); t++) {
rectangle(frame, faces[t], Scalar(0, 0, 255), 2, 8, 0);
}
char c = waitKey(50);
imshow("output", frame);
if (c == 27) {
break;
}
}
capture.release();
/*//摄像头人脸与眼睛检测
/*if (!face_classifier.load(facefile)) {
cout << "can't load face featrue data...";
return -1;
}
if (!eye_classifier.load(eyefile)) {
cout << "can't load eye featrue data...";
return -1;
}
namedWindow("camera-demo",1);
VideoCapture captrue(0);
Mat frame;
Mat gray;
vector<Rect> faces;
vector<Rect> eyes;
while (captrue.read(frame)) {
cvtColor(frame, gray, COLOR_BGR2GRAY);
equalizeHist(gray, gray);
face_classifier.detectMultiScale(gray, faces, 1.2, 3, 0, Size(30, 30));
for (size_t t = 0; t < faces.size(); t++) {
Rect roi;
roi.x = faces[static_cast<int>(t)].x;
roi.y = faces[static_cast<int>(t)].y;
roi.width= faces[static_cast<int>(t)].width;
roi.height = faces[static_cast<int>(t)].height/2;
Mat faceROI = frame(roi);
eye_classifier.detectMultiScale(faceROI, eyes, 1.2, 3, 0, Size(20, 20));
for (size_t k = 0; k < eyes.size(); k++) {
Rect rect;
rect.x = faces[static_cast<int>(t)].x + eyes[k].x;
rect.y = faces[static_cast<int>(t)].y + eyes[k].y;//因为是在faces的ROI区域找到的eyes
rect.width = eyes[k].width;
rect.height = eyes[k].height;
rectangle(frame, rect, Scalar(0, 255, 0), 2, 8, 0);
}
rectangle(frame, faces[t], Scalar(0, 0, 255), 2, 8, 0);
}
imshow("camera-demo", frame);
char c = waitKey(30);
if (c == 27) {
break;
}
}*/
waitKey(0);
return 0;
}
【opencv学习笔记】Harr与LBP级联分类器
最新推荐文章于 2020-12-08 11:42:42 发布