类 Face
- java.lang.Object
-
- org.opencv.face.Face
-
public class Face extends java.lang.Object
-
-
构造函数摘要
构造函数 构造函数 描述 Face()
-
方法摘要
所有方法 静态方法 具体方法 修饰符和类型 方法 描述 static Facemark
createFacemarkAAM()
static Facemark
createFacemarkKazemi()
static Facemark
createFacemarkLBF()
static void
drawFacemarks(Mat image, Mat points)
用于绘制检测到的面部特征点。static void
drawFacemarks(Mat image, Mat points, Scalar color)
用于绘制检测到的面部特征点。static boolean
getFacesHAAR(Mat image, Mat faces, java.lang.String face_cascade_name)
默认人脸检测器。此函数主要由 Facemark 算法的实现使用。static boolean
loadDatasetList(java.lang.String imageList, java.lang.String annotationList, java.util.List<java.lang.String> images, java.util.List<java.lang.String> annotations)
用于加载训练图像和标注文件路径列表的工具函数。static boolean
loadFacePoints(java.lang.String filename, Mat points)
用于从给定文件加载面部特征点信息的工具函数。static boolean
loadFacePoints(java.lang.String filename, Mat points, float offset)
用于从给定文件加载面部特征点信息的工具函数。static boolean
loadTrainingData(java.lang.String imageList, java.lang.String groundTruth, java.util.List<java.lang.String> images, Mat facePoints)
用于从数据集中加载面部特征点信息的工具函数。static boolean
loadTrainingData(java.lang.String imageList, java.lang.String groundTruth, java.util.List<java.lang.String> images, Mat facePoints, float offset)
用于从数据集中加载面部特征点信息的工具函数。static boolean
loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints)
用于从单个文件加载面部特征点数据集的工具函数。static boolean
loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints, char delim)
用于从单个文件加载面部特征点数据集的工具函数。static boolean
loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints, char delim, float offset)
用于从单个文件加载面部特征点数据集的工具函数。static boolean
loadTrainingData(java.util.List<java.lang.String> filename, java.util.List<MatOfPoint2f> trainlandmarks, java.util.List<java.lang.String> trainimages)
此函数从包含相应图像名称和特征点的 .txt 文件中提取训练数据。
-
-
-
方法详情
-
createFacemarkAAM
public static Facemark createFacemarkAAM()
-
createFacemarkLBF
public static Facemark createFacemarkLBF()
-
createFacemarkKazemi
public static Facemark createFacemarkKazemi()
-
getFacesHAAR
public static boolean getFacesHAAR(Mat image, Mat faces, java.lang.String face_cascade_name)
默认人脸检测器。此函数主要由 Facemark 算法的实现使用。建议最终用户使用 Facemark::getFaces 函数,该函数可以手动定义并通过 Facemark::setFaceDetector 绕过算法。- 参数
image
- 要处理的输入图像。faces
- 函数的输出,表示检测到的人脸的感兴趣区域。每个面部都存储在 cv::Rect 容器中。<B>用法示例</B>std::vector<cv::Rect> faces; CParams params("haarcascade_frontalface_alt.xml"); cv::face::getFaces(frame, faces, ¶ms); for(int j=0;j<faces.size();j++){ cv::rectangle(frame, faces[j], cv::Scalar(255,0,255)); } cv::imshow("detection", frame);
face_cascade_name
- 自动生成- 返回
- 自动生成
-
loadDatasetList
public static boolean loadDatasetList(java.lang.String imageList, java.lang.String annotationList, java.util.List<java.lang.String> images, java.util.List<java.lang.String> annotations)
用于加载训练图像和标注文件路径列表的工具函数。- 参数
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);
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints, char delim, float offset)
用于从单个文件加载面部特征点数据集的工具函数。- 参数
filename
- 包含数据集信息的文件的文件名。每一行包含图像的文件名,后跟面部特征点 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
- 一个向量,其中每个元素代表数据集中图像的文件名。默认情况下不加载图像以节省内存。facePoints
- 加载的所有训练数据的特征点。delim
- 各个元素之间的分隔符,默认值为空格。offset
- 用于调整加载点的偏移值。<B>用法示例</B>cv::String imageFiles = "../data/images_train.txt"; cv::String ptsFiles = "../data/points_train.txt"; std::vector<String> images; std::vector<std::vector<Point2f> > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints, char delim)
用于从单个文件加载面部特征点数据集的工具函数。- 参数
filename
- 包含数据集信息的文件的文件名。每一行包含图像的文件名,后跟面部特征点 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
- 一个向量,其中每个元素代表数据集中图像的文件名。默认情况下不加载图像以节省内存。facePoints
- 加载的所有训练数据的特征点。delim
- 各个元素之间的分隔符,默认值为空格。<B>用法示例</B>cv::String imageFiles = "../data/images_train.txt"; cv::String ptsFiles = "../data/points_train.txt"; std::vector<String> images; std::vector<std::vector<Point2f> > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.lang.String filename, java.util.List<java.lang.String> images, Mat facePoints)
用于从单个文件加载面部特征点数据集的工具函数。- 参数
filename
- 包含数据集信息的文件的文件名。每一行包含图像的文件名,后跟面部特征点 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
- 一个向量,其中每个元素代表数据集中图像的文件名。默认情况下不加载图像以节省内存。facePoints
- 加载的所有训练数据的特征点。<B>用法示例</B>cv::String imageFiles = "../data/images_train.txt"; cv::String ptsFiles = "../data/points_train.txt"; std::vector<String> images; std::vector<std::vector<Point2f> > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.lang.String imageList, java.lang.String groundTruth, java.util.List<java.lang.String> images, Mat facePoints, float offset)
用于从数据集中加载面部特征点信息的工具函数。- 参数
imageList
- 包含训练数据集中图像文件名列表的文件。groundTruth
- 包含存储特征点信息的文件名列表的文件。每个文件中的内容应遵循标准格式(参见 face::loadFacePoints)。images
- 一个向量,其中每个元素代表数据集中图像的文件名。默认情况下不加载图像以节省内存。facePoints
- 加载的所有训练数据的特征点。offset
- 用于调整加载点的偏移值。<B>用法示例</B>cv::String imageFiles = "../data/images_train.txt"; cv::String ptsFiles = "../data/points_train.txt"; std::vector<String> images; std::vector<std::vector<Point2f> > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 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
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.lang.String imageList, java.lang.String groundTruth, java.util.List<java.lang.String> images, Mat facePoints)
用于从数据集中加载面部特征点信息的工具函数。- 参数
imageList
- 包含训练数据集中图像文件名列表的文件。groundTruth
- 包含存储特征点信息的文件名列表的文件。每个文件中的内容应遵循标准格式(参见 face::loadFacePoints)。images
- 一个向量,其中每个元素代表数据集中图像的文件名。默认情况下不加载图像以节省内存。facePoints
- 加载所有训练数据的标志点。<B>使用方法示例</B>cv::String imageFiles = "../data/images_train.txt"; cv::String ptsFiles = "../data/points_train.txt"; std::vector<String> images; std::vector<std::vector<Point2f> > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 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
- 返回
- 自动生成
-
loadTrainingData
public static boolean loadTrainingData(java.util.List<java.lang.String> filename, java.util.List<MatOfPoint2f> trainlandmarks, java.util.List<java.lang.String> trainimages)
此函数从包含对应图像名称和标志点的 .txt 文件中提取训练数据。每个文件的首行应给出其标志点在文件中描述的图像路径。随后各行应为图像中标志点的坐标,即每行格式为 x,y,其中 x 表示标志点的 x 坐标,y 表示标志点的 y 坐标。参考文件请参见<a href="http://www.ifp.illinois.edu/~vuongle2/helen/">HELEN 数据集</a>- 参数
filename
- 一个包含 .txt 文件名称的 cv::String 类型向量。trainlandmarks
- 一个 cv::Point2f 类型向量,用于存储所有图像的形状或标志点。trainimages
- 一个 cv::String 类型向量,用于存储已跟踪标志点的图像名称。- 返回
- 布尔值。成功读取数据时返回 true,否则返回 false。
-
loadFacePoints
public static boolean loadFacePoints(java.lang.String filename, Mat points, float offset)
用于从给定文件加载面部特征点信息的工具函数。- 参数
filename
- 包含面部标志点数据的 .txt 文件的文件名。points
- 加载的面部标志点。offset
- 用于调整加载点的偏移值。<B>使用方法示例</B>std::vector<Point2f> points; face::loadFacePoints("filename.txt", points, 0.0f);
标注文件应遵循默认格式:version: 1 n_points: 68 { 212.716603 499.771793 230.232816 566.290071 ... }
其中 n_points 为考虑的点数,每个点由其 x 和 y 坐标表示。- 返回
- 自动生成
-
loadFacePoints
public static boolean loadFacePoints(java.lang.String filename, Mat points)
用于从给定文件加载面部特征点信息的工具函数。- 参数
filename
- 包含面部标志点数据的 .txt 文件的文件名。points
- 加载的面部标志点。<B>使用方法示例</B>std::vector<Point2f> points; face::loadFacePoints("filename.txt", points, 0.0f);
标注文件应遵循默认格式:version: 1 n_points: 68 { 212.716603 499.771793 230.232816 566.290071 ... }
其中 n_points 为考虑的点数,每个点由其 x 和 y 坐标表示。- 返回
- 自动生成
-
drawFacemarks
public static void drawFacemarks(Mat image, Mat points, Scalar color)
用于绘制检测到的面部特征点。- 参数
image
- 要处理的输入图像。points
- 包含将要绘制的点的数据。color
- 点的颜色,以 cv::Scalar 表示的 BGR 格式。<B>使用方法示例</B>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)); }
-
drawFacemarks
public static void drawFacemarks(Mat image, Mat points)
用于绘制检测到的面部特征点。- 参数
image
- 要处理的输入图像。points
- 包含将要绘制的点的数据。<B>使用方法示例</B>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)); }
-
-