Face Engine SDK  5.17.0
A face detection, recognition and tracking engine.
include/fsdk/Types/Landmarks.h
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines