前几天实验室考核要用到seetaface2,给的参考资料是GitHub上官方文档,是用c++写的,但自己只有c语言基础看官方给的代码有点吃力,在网上找了好久都没发现好的参考资料。
然后只能自己摸索,经过几天的尝试后,终于看懂了官方文档,后来有看了看官方的c++头文件,原来用到的函数,在头文件里都有说明和参数介绍,说的还比较清楚。
这里附上github地址: https://github.com/seetaface/SeetaFaceEngine2/blob/master/example/C++/README.md
后来写程序就比较容易了,所以把代码贴在这里,给要找seetaface2代码的同学一点参考吧。
(linux环境下,配合opencv使用)
1,一对一人脸识别
#include <iostream>
#include <opencv2/core.hpp> //使用自己编译的opencv头文件
#include <opencv/highgui.h>
#include <opencv2/opencv.hpp>
#include <seeta/FaceDetector2.h>
#include <seeta/Struct_cv.h>
#include <seeta/PointDetector2.h>
#include <seeta/FaceRecognizer.h>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
seeta::FaceDetector2 FD("bindata/SeetaFaceDetector2.0.ats");
seeta::PointDetector2 PD("bindata/SeetaPointDetector2.0.pts5.ats");
seeta::FaceRecognizer2 FR("bindata/SeetaFaceRecognizer2.0.ats");
float similar = 0;
Mat mat1 = imread("image/2.jpg");
seeta::cv::ImageData image1 = mat1;
SeetaRect *face1 = FD.Detect(image1);
SeetaPointF points1[5];
PD.DetectEx(image1, *face1, points1);
Mat mat2 = imread("image/1.jpg");
seeta::cv::ImageData image2 = mat2;
SeetaRect *face2 = FD.Detect(image2);
SeetaPointF points2[5];
PD.DetectEx(image2, *face2, points2);
//判断相似性
similar = FR.Compare(image1, points1, image2, points2);
if (similar <= 0.65) //以0.6