Files
DeepCamFaceSDK2.0/TEST/sdk_test_face_landmark68/sdk_test_face_landmark68.cpp
2024-12-13 23:33:37 +08:00

122 lines
2.3 KiB
C++

// sdk_test_face_landmark68.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Inc/DeepCamFaceApi.h"
#include "Inc/TimeCount.h"
void test1()
{
cv::VideoCapture camera1(1);
if (!camera1.isOpened())
return;
while (true)
{
cv::Mat img;
camera1 >> img;
if (!img.empty())
{
std::vector<FaceInfo> face_infos;
{
USE_TIME t("FaceDetect ==> ");
DeepCamFaceDetect(img, face_infos);
}
float landmark68[136] = { 0 };
for (auto& obj : face_infos)
{
USE_TIME t("Get Landmark68 => ");
DeepCamGetFaceLandmarks68(img, obj.x1, obj.y1, obj.x2, obj.y2, landmark68);
break;
}
for (int i = 0; i < 136; i++)
{
cv::circle(img, cv::Point(landmark68[i * 2], landmark68[i * 2 + 1]), 1, cv::Scalar(0, 0, 255), 2);
}
cv::imshow("show", img);
cv::waitKey(1);
}
}
}
void test2()
{
cv::VideoCapture camera1(1);
if (!camera1.isOpened())
return;
while (true)
{
cv::Mat img;
camera1 >> img;
if (!img.empty())
{
int face_num = 0;
{
USE_TIME t("FaceDetect ==> ");
face_num = DeepCamFaceDetectStd(img.data, img.cols, img.rows, PIXEL_BGR);
}
float landmark68[136] = { 0 };
if (face_num > 0)
{
USE_TIME t("Get Landmark68 => ");
DeepCamGetFaceLandmark68Std(0,landmark68);
}
for (int i = 0; i < 136; i++)
{
cv::circle(img, cv::Point(landmark68[i * 2], landmark68[i * 2 + 1]), 1, cv::Scalar(0, 0, 255), 2);
}
}
cv::imshow("show", img);
cv::waitKey(1);
}
}
void test_face_quality()
{
cv::VideoCapture camera1(1);
if (!camera1.isOpened())
return;
while (true)
{
cv::Mat img;
camera1 >> img;
if (!img.empty())
{
int face_num = 0;
{
USE_TIME t("FaceDetect ==> ");
face_num = DeepCamFaceDetectStd(img.data, img.cols, img.rows, PIXEL_BGR);
}
float score = 0;
if (face_num > 0)
{
USE_TIME t("Get Face Quality => ");
DeepCamGetFaceQualityStd(0, score);
}
cv::putText(img, std::to_string((int)score), cv::Point(10, 45), 2, 2, cv::Scalar(0,0,255), 2);
float face_rect[4] = { 0.f };
DeepCamGetFaceRectStd(0, face_rect);
cv::rectangle(img, cv::Rect(face_rect[0], face_rect[1], face_rect[2] - face_rect[0], face_rect[3] - face_rect[1]), cv::Scalar(0,0255), 2);
}
cv::imshow("show", img);
cv::waitKey(1);
}
}
int main()
{
//test_face_quality();
test2();
return 0;
}