2016年4月7日 星期四

OpenCV 3.1 Face Recognition

OpenCV 3.1 人臉辨識

程式截圖:





請先將 openCV 內的訓練好的 xml 檔案放到主程式資料夾





程式碼:

#include <opencv\highgui.h>
#include <opencv\cv.h>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;

void detectAndDisplay(Mat);

String face_cascade_name = "haarcascade_frontalface_default.xml";
CascadeClassifier face_cascade;

int main()
{
 if (!face_cascade.load(face_cascade_name))
 {
  printf("--(!)Error loading\n");
  return -1;
 }
 Mat frame = imread("3.jpg", 1); //這裡請改你想放的圖片路徑
 imshow("image", frame);
 detectAndDisplay(frame);
 waitKey(0);
 return 0;
}
void detectAndDisplay(Mat frame)
{
 vector<Rect> faces;
 Mat frame_gray;

 cvtColor(frame, frame_gray, CV_BGR2GRAY);

 //-- Detect faces
 face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(10, 10));

 for (int i = 0; i < faces.size(); i++)
 {
  Point p1(faces[i].x, faces[i].y);
  Point p2(faces[i].x + faces[i].width, faces[i].y + faces[i].height);

  rectangle(frame, p1, p2, Scalar(0, 0, 255), 2, 0);
 }

 imshow("face detect", frame);
}

沒有留言:

張貼留言