OpenCV 脸部识别 c++

来源:互联网 发布:使命召唤11 知乎 编辑:程序博客网 时间:2024/04/28 21:56


#include <opencv2/objdetect/objdetect.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp> #include <iostream>#include <stdio.h> using namespace std;using namespace cv; int main(int argc, const char** argv){    //create the cascade classifier object used for the face detection    CascadeClassifier face_cascade;    //use the haarcascade_frontalface_alt.xml library    face_cascade.load("haarcascade_frontalface_alt2.xml");     //setup video capture device and link it to the first capture device    VideoCapture captureDevice;    captureDevice.open(0);     //setup image files used in the capture process    Mat captureFrame;    Mat grayscaleFrame;     //create a window to present the results    namedWindow("outputCapture", 1);     //create a loop to capture and find faces    while(true)    {        //capture a new image frame        captureDevice>>captureFrame;         //convert captured image to gray scale and equalize        cvtColor(captureFrame, grayscaleFrame, CV_BGR2GRAY);        equalizeHist(grayscaleFrame, grayscaleFrame);         //create a vector array to store the face found        std::vector<Rect> faces;         //find faces and store them in the vector array        face_cascade.detectMultiScale(grayscaleFrame, faces, 1.1, 3, CV_HAAR_FIND_BIGGEST_OBJECT|CV_HAAR_SCALE_IMAGE, Size(30,30));         //draw a rectangle for all found faces in the vector array on the original image        for(int i = 0; i < faces.size(); i++)        {            Point pt1(faces[i].x + faces[i].width, faces[i].y + faces[i].height);            Point pt2(faces[i].x, faces[i].y);             rectangle(captureFrame, pt1, pt2, cvScalar(0, 255, 0, 0), 1, 8, 0);        }         //print the output        imshow("outputCapture", captureFrame);         //pause for 33ms        waitKey(33);    }     return 0;}




原创粉丝点击