// 包含OpenCV库中有关对象检测的头文件
#include "opencv2/objdetect.hpp"
// 包含OpenCV库中有关高层GUI函数的头文件
#include "opencv2/highgui.hpp"
// 包含OpenCV库中有关图片处理的头文件
#include "opencv2/imgproc.hpp"
// 包含输入输出流库
#include <iostream>
// 包含C标准输入输出库
#include <cstdio>
// 包含向量容器库
#include <vector>
// 包含算法库
#include <algorithm>
// 使用标准库命名空间
using namespace std;
// 使用OpenCV命名空间
using namespace cv;
// 用于人脸特征点检测的函数声明
static void help(char** argv);
static void detectFaces(Mat&, vector<Rect_<int> >&, string);
static void detectEyes(Mat&, vector<Rect_<int> >&, string);
static void detectNose(Mat&, vector<Rect_<int> >&, string);
static void detectMouth(Mat&, vector<Rect_<int> >&, string);
static void detectFacialFeaures(Mat&, const vector<Rect_<int> >, string, string, string);
// 保存输入图片路径和各个特征的Haarcascade分类器路径的字符串变量
string input_image_path;
string face_cascade_path, eye_cascade_path, nose_cascade_path, mouth_cascade_path;
// 主函数
int main(int argc, char** argv)
{
// 解析命令行参数
cv::CommandLineParser parser(argc, argv,
"{eyes|data/haarcascades/haarcascade_eye.xml|}{nose||}{mouth||}{help h||}{@image|lena.jpg|}{@facexml|data/haarcascades/haarcascade_frontalface_alt2.xml|}");
// 如果有help参数,则显示帮助信息
if (parser.has("help"))
{
help(argv);
return 0;
}
// 获取从命令行中解析出来的参数值,赋值给相应的变量
input_image_path = parser.get<string>("@image");
face_cascade_path = parser.get<string>("
【opencv】示例-facial_features.cpp 使用Haarcascade分类器检测面部特征点
最新推荐文章于 2025-06-16 17:09:20 发布