OpenCV  4.10.0
开源计算机视觉库
加载中...
搜索中...
没有匹配项
| 类型定义 | 函数
人脸分析

详细描述

类  cv::face::BasicFaceRecognizer
 
结构体  cv::face::CParams
 
类  cv::face::EigenFaceRecognizer
 
类  cv::face::Facemark
 所有脸部标记模型的抽象基类。 更多...
 
类  cv::face::FacemarkAAM
 
类  cv::face::FacemarkLBF
 
类  cv::face::FacemarkTrain
 可训练脸部标记模型的抽象基类。 更多...
 
类  cv::face::FaceRecognizer
 所有人脸识别模型的抽象基类。 更多...
 
类  cv::face::FisherFaceRecognizer
 
类  cv::face::LBPHFaceRecognizer
 
类  cv::face::MACE
 最小平均相关能量滤波器,适用于使用(可取消)生物特征进行身份验证。 (不需要太多正样本训练(10-50),并且完全不需要负样本,对噪声/加盐也具有鲁棒性) 更多...
 
类  cv::face::PredictCollector
 所有预测结果处理策略的抽象基类。 更多...
 
类  cv::face::StandardCollector
 默认预测收集器。 更多...
 

类型定义

typedef bool(* cv::face::FN_FaceDetector) (InputArray, OutputArray, void *userData)
 

函数

Ptr< Facemarkcv::face::createFacemarkAAM ()
 构建一个 AAM 脸部标记检测器
 
Ptr< Facemarkcv::face::createFacemarkKazemi ()
 构建一个 Kazemi 脸部标记检测器
 
Ptr< Facemarkcv::face::createFacemarkLBF ()
 构建一个 LBF 脸部标记检测器
 
void cv::face::drawFacemarks (InputOutputArray image, InputArray points, Scalar color=Scalar(255, 0, 0))
 用于绘制检测到的脸部地标点的工具。
 
bool cv::face::getFaces (InputArray image, OutputArray faces, CParams *params)
 默认人脸检测器此函数主要用于 Facemark 算法 的实现。 建议最终用户使用 Facemark::getFaces 函数,该函数可以通过 Facemark::setFaceDetector 手动定义和绕过算法。
 
bool cv::face::getFacesHAAR (InputArray image, OutputArray faces, const String &face_cascade_name)
 
bool cv::face::loadDatasetList (String imageList, String annotationList, std::vector< String > &images, std::vector< String > &annotations)
 用于加载训练图像和标注文件路径列表的工具。
 
bool cv::face::loadFacePoints (String filename, OutputArray points, float offset=0.0f)
 用于从给定文件加载脸部地标信息的工具。
 
bool cv::face::loadTrainingData (std::vector< String > filename, std::vector< std::vector< Point2f > > &trainlandmarks, std::vector< String > &trainimages)
 此函数从 .txt 文件中提取训练数据,这些文件包含相应的图像名称和地标。 每个文件中的第一个文件应给出描述文件中地标的图像路径。 然后在后续行中应是图像中地标的坐标,即每行应为 x,y 的形式,其中 x 代表地标的 x 坐标,y 代表地标的 y 坐标。
 
bool cv::face::loadTrainingData (String filename, std::vector< String > &images, OutputArray facePoints, char delim=' ', float offset=0.0f)
 用于从单个文件加载脸部地标数据集的工具。
 
bool cv::face::loadTrainingData (String imageList, String groundTruth, std::vector< String > &images, OutputArray facePoints, float offset=0.0f)
 用于从数据集中加载脸部地标信息的工具。
 

类型定义文档

◆ FN_FaceDetector

typedef bool(* cv::face::FN_FaceDetector) (InputArray, OutputArray, void *userData)

函数文档

◆ createFacemarkAAM()

Ptr< Facemark > cv::face::createFacemarkAAM ( )
Python
cv.face.createFacemarkAAM() -> retval

#include <opencv2/face/facemark.hpp>

构建一个 AAM 脸部标记检测器

◆ createFacemarkKazemi()

Ptr< Facemark > cv::face::createFacemarkKazemi ( )
Python
cv.face.createFacemarkKazemi() -> retval

#include <opencv2/face/facemark.hpp>

构建一个 Kazemi 脸部标记检测器

◆ createFacemarkLBF()

Ptr< Facemark > cv::face::createFacemarkLBF ( )
Python
cv.face.createFacemarkLBF() -> retval

#include <opencv2/face/facemark.hpp>

构建一个 LBF 脸部标记检测器

◆ drawFacemarks()

void cv::face::drawFacemarks ( InputOutputArray  image,
InputArray  points,
Scalar  color = Scalar(255, 0, 0) 
)
Python
cv.face.drawFacemarks(image, points[, color]) -> image

#include <opencv2/face/facemark_train.hpp>

用于绘制检测到的脸部地标点的工具。

参数
image要处理的输入图像。
points包含要绘制的点数据。
color以 BGR 格式表示的点的颜色,由 cv::Scalar 表示。

使用示例

std::vector<Rect> faces;
std::vector<std::vector<Point2f> > landmarks;
facemark->getFaces(img, faces);
facemark->fit(img, faces, landmarks);
for(int j=0;j<rects.size();j++){
face::drawFacemarks(frame, landmarks[j], Scalar(0,0,255));
}
Scalar_< double > Scalar
定义 types.hpp:702
void drawFacemarks(InputOutputArray image, InputArray points, Scalar color=Scalar(255, 0, 0))
用于绘制检测到的脸部地标点的工具。

◆ getFaces()

bool cv::face::getFaces ( InputArray  image,
OutputArray  faces,
CParams params 
)

#include <opencv2/face/facemark_train.hpp>

默认人脸检测器此函数主要用于 Facemark 算法 的实现。 建议最终用户使用 Facemark::getFaces 函数,该函数可以通过 Facemark::setFaceDetector 手动定义和绕过算法。

参数
image要处理的输入图像。
faces函数的输出,代表检测到的人脸的感兴趣区域。 每张脸都存储在 cv::Rect 容器中。
params检测器参数

使用示例

std::vector<cv::Rect> faces;
CParams params("haarcascade_frontalface_alt.xml");
cv::face::getFaces(frame, faces, &params);
for(int j=0;j<faces.size();j++){
cv::rectangle(frame, faces[j], cv::Scalar(255,0,255));
}
cv::imshow("detection", frame);
bool getFaces(InputArray image, OutputArray faces, CParams *params)
默认人脸检测器此函数主要用于 Facemark 算法的实现....
void imshow(const String &winname, InputArray mat)
在指定窗口中显示图像。
void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
绘制简单的、厚的或填充的直立矩形。
定义 facemark_train.hpp:29

◆ getFacesHAAR()

bool cv::face::getFacesHAAR ( InputArray  image,
OutputArray  faces,
const String face_cascade_name 
)
Python
cv.face.getFacesHAAR(image, face_cascade_name[, faces]) -> retval, faces

◆ loadDatasetList()

bool cv::face::loadDatasetList ( String  imageList,
String  annotationList,
std::vector< String > &  images,
std::vector< String > &  annotations 
)
Python
cv.face.loadDatasetList(imageList, annotationList, images, annotations) -> retval

#include <opencv2/face/facemark_train.hpp>

用于加载训练图像和标注文件路径列表的工具。

参数
imageList指定的文件包含训练图像的路径。
annotationList指定的文件包含训练标注的路径。
images加载的训练图像路径。
annotations加载的标注文件路径。

使用示例

String imageFiles = "images_path.txt";
String ptsFiles = "annotations_path.txt";
std::vector<String> images_train;
std::vector<String> landmarks_train;
loadDatasetList(imageFiles,ptsFiles,images_train,landmarks_train);
std::string String
定义 cvstd.hpp:151
bool loadDatasetList(String imageList, String annotationList, std::vector< String > &images, std::vector< String > &annotations)
用于加载训练图像和标注文件路径列表的工具。

◆ loadFacePoints()

bool cv::face::loadFacePoints ( String  文件名,
OutputArray  points,
浮点数  偏移量 = 0.0f 
)
Python
cv.face.loadFacePoints(文件名[, 点[, 偏移量]]) -> 返回值, 点

#include <opencv2/face/facemark_train.hpp>

用于从给定文件加载脸部地标信息的工具。

参数
文件名包含面部特征点数据的文件的名称。
points加载的面部特征点。
偏移量用于调整加载点的偏移量值。

使用示例

std::vector<Point2f> 点;
face::loadFacePoints("filename.txt", 点, 0.0f);
bool loadFacePoints(String 文件名, OutputArray 点, float 偏移量=0.0f)
用于从给定文件加载脸部地标信息的工具。

标注文件应遵循默认格式,即

版本: 1
点数量: 68
{
212.716603 499.771793
230.232816 566.290071
...
}

其中点数量是考虑的点的数量,每个点表示为其在 x 和 y 方向上的位置。

◆ loadTrainingData() [1/3]

bool cv::face::loadTrainingData ( std::vector< String 文件名,
std::vector< std::vector< Point2f > > &  训练特征点,
std::vector< String > &  训练图像 
)
Python
cv.face.loadTrainingData(文件名, 图像[, 面部特征点[, 分隔符[, 偏移量]]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(imageList, groundTruth, 图像[, 面部特征点[, 偏移量]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(文件名, 训练特征点, 训练图像) -> retval

#include <opencv2/face/facemark_train.hpp>

此函数从 .txt 文件中提取训练数据,这些文件包含相应的图像名称和地标。 每个文件中的第一个文件应给出描述文件中地标的图像路径。 然后在后续行中应是图像中地标的坐标,即每行应为 x,y 的形式,其中 x 代表地标的 x 坐标,y 代表地标的 y 坐标。

作为参考,您可以查看 HELEN 数据集 中提供的文件。

参数
文件名一个包含 .txt 文件名称的 cv::String 类型的向量。
训练特征点一个包含所有图像形状或特征点的 cv::Point2f 类型的向量。
训练图像一个包含其特征点被跟踪的图像名称的 cv::String 类型的向量
返回值
一个布尔值。如果它成功读取数据则返回 true,否则返回 false。

◆ loadTrainingData() [2/3]

bool cv::face::loadTrainingData ( String  文件名,
std::vector< String > &  images,
OutputArray  面部特征点,
字符  分隔符 = ' ',
浮点数  偏移量 = 0.0f 
)
Python
cv.face.loadTrainingData(文件名, 图像[, 面部特征点[, 分隔符[, 偏移量]]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(imageList, groundTruth, 图像[, 面部特征点[, 偏移量]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(文件名, 训练特征点, 训练图像) -> retval

#include <opencv2/face/facemark_train.hpp>

用于从单个文件加载脸部地标数据集的工具。

参数
文件名包含数据集信息的文件的名称。每行包含一个图像的名称,后面跟着面部特征点对的 x 和 y 值,它们之间用空格分隔。例如
/home/user/ibug/image_003_1.jpg 336.820955 240.864510 334.238298 260.922709 335.266918 ...
/home/user/ibug/image_005_1.jpg 376.158428 230.845712 376.736984 254.924635 383.265403 ...
images一个向量,其中每个元素表示数据集中图像的文件名。默认情况下,图像不会被加载,以节省内存。
面部特征点所有训练数据的加载特征点。
分隔符每个元素之间的分隔符,默认值为空格。
偏移量用于调整加载点的偏移量值。

使用示例

cv::String imageFiles = "../data/images_train.txt";
cv::String ptsFiles = "../data/points_train.txt";
std::vector<String> 图像;
std::vector<std::vector<Point2f> > 面部特征点;
loadTrainingData(imageFiles, ptsFiles, 图像, 面部特征点, 0.0f);
bool loadTrainingData(String 文件名, std::vector< String > &图像, OutputArray 面部特征点, char 分隔符=' ', float 偏移量=0.0f)
用于从单个文件加载脸部地标数据集的工具。

◆ loadTrainingData() [3/3]

bool cv::face::loadTrainingData ( String  imageList,
String  groundTruth,
std::vector< String > &  images,
OutputArray  面部特征点,
浮点数  偏移量 = 0.0f 
)
Python
cv.face.loadTrainingData(文件名, 图像[, 面部特征点[, 分隔符[, 偏移量]]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(imageList, groundTruth, 图像[, 面部特征点[, 偏移量]]) -> 返回值, 面部特征点
cv.face.loadTrainingData(文件名, 训练特征点, 训练图像) -> retval

#include <opencv2/face/facemark_train.hpp>

用于从数据集中加载脸部地标信息的工具。

参数
imageList包含训练数据集中图像文件名列表的文件。
groundTruth包含存储特征点信息的文件名列表的文件。每个文件中的内容应遵循标准格式(参见 face::loadFacePoints)。
images一个向量,其中每个元素表示数据集中图像的文件名。默认情况下,图像不会被加载,以节省内存。
面部特征点所有训练数据的加载特征点。
偏移量用于调整加载点的偏移量值。

使用示例

cv::String imageFiles = "../data/images_train.txt";
cv::String ptsFiles = "../data/points_train.txt";
std::vector<String> 图像;
std::vector<std::vector<Point2f> > 面部特征点;
loadTrainingData(imageFiles, ptsFiles, 图像, 面部特征点, 0.0f);

images_train.txt 中内容示例

/home/user/ibug/image_003_1.jpg
/home/user/ibug/image_004_1.jpg
/home/user/ibug/image_005_1.jpg
/home/user/ibug/image_006.jpg

points_train.txt 中内容示例

/home/user/ibug/image_003_1.pts
/home/user/ibug/image_004_1.pts
/home/user/ibug/image_005_1.pts
/home/user/ibug/image_006.pts