Face Engine SDK
5.17.0
A face detection, recognition and tracking engine.
|
00001 #pragma once 00002 00003 #include <fsdk/Def.h> 00004 00005 #include <fsdk/Types/Vector2.h> 00006 00007 #include <algorithm> 00008 #include <cstdint> 00009 #include <iterator> 00010 00011 namespace fsdk { 00013 typedef Vector2<float> Landmark; 00014 00022 template <size_t numOfLandmarks> 00023 struct Landmarks { 00024 00025 // FSDK_DEPRECATED("landmarkCount deprecated. Use size() method to get length") 00026 static constexpr uint64_t landmarkCount = numOfLandmarks; 00027 00029 Landmark landmarks[numOfLandmarks]; 00030 00031 Landmarks() = default; 00032 ~Landmarks() = default; 00033 00034 Landmarks(const Landmarks& cp) { 00035 *this = cp; 00036 } 00037 00038 Landmarks(Landmarks&& mv) { 00039 *this = std::move(mv); 00040 } 00041 00042 Landmarks& operator=(const Landmarks& cp) { 00043 std::copy(std::begin(cp.landmarks), std::end(cp.landmarks), std::begin(landmarks)); 00044 00045 return *this; 00046 } 00047 00048 Landmarks& operator=(Landmarks&& mv) { 00049 std::move(std::begin(mv.landmarks), std::end(mv.landmarks), std::begin(landmarks)); 00050 00051 return *this; 00052 } 00053 00054 constexpr size_t size() const noexcept { 00055 return numOfLandmarks; 00056 } 00057 }; 00058 00060 using Landmarks5 = Landmarks<5>; 00062 using Landmarks68 = Landmarks<68>; 00063 00067 struct Landmarks5Indexes { 00068 enum { 00069 LandmarkLeftEye = 0, 00070 LandmarkRightEye, 00071 LandmarkNose, 00072 LandmarkMouthLeftCorner, 00073 LandmarkMouthRightCorner, 00074 LandmarkCount 00075 }; 00076 }; 00077 00083 Landmarks5 FSDK_API convert(const Landmarks68& landmarks); 00084 } // namespace fsdk