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);
}
沒有留言:
張貼留言