// opencvface.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<opencv2\opencv.hpp>
#include <iostream>
#include <stdio.h>using namespace std;
using namespace cv;/** Function Headers */
void detectAndDisplay(Mat frame);/** opencv安装路径 有该训练后的配置文件 */
String face_cascade_name = "D:\\opencv\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml";
String eyes_cascade_name = "D:\\opencv\\opencv\\build\\etc\\haarcascades\\haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade; //定义人脸分类器
CascadeClassifier eyes_cascade; //定义人眼分类器
String window_name = "Capture - Face detection";/** @function main */
int main(void)
{
Mat frame = imread("C:\\Users\\Admin\\Desktop\\123\\1.jpg");
if (!face_cascade.load(face_cascade_name)) { printf("--(!)Error loading face cascade\n"); return -1; };
if (!eyes_cascade.load(eyes_cascade_name)) { printf("--(!)Error loading eyes cascade\n"); return -1; };
detectAndDisplay(frame);int c = waitKey(0);
if ((char)c == 27) { return 0; }
//}
return 0;
}
void detectAndDisplay(Mat frame)
{
std::vector<Rect> faces;
Mat frame_gray;cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3, CV_HAAR_DO_ROUGH_SEARCH, Size(70, 70), Size(100, 100));
for (size_t i = 0; i < faces.size(); i++)
{rectangle(frame, faces[i], Scalar(255, 0, 0), 2, 8, 0);
Mat faceROI = frame_gray(faces[i]);
std::vector<Rect> eyes;for (size_t j = 0; j < eyes.size(); j++)
{
Rect rect(faces[i].x + eyes[j].x, faces[i].y + eyes[j].y, eyes[j].width, eyes[j].height);
rectangle(frame, rect, Scalar(0, 255, 0), 2, 8, 0);
}
}namedWindow(window_name, 2);
imshow(window_name, frame);
}
opencv 人脸检测 c++
最新推荐文章于 2023-08-26 15:29:37 发布