Update to latest version 09/17
Updating AR SDK to latest version
This commit is contained in:
187
samples/utils/FeatureVertexName.cpp
Normal file
187
samples/utils/FeatureVertexName.cpp
Normal file
@@ -0,0 +1,187 @@
|
||||
/*###############################################################################
|
||||
#
|
||||
# Copyright(c) 2019 NVIDIA CORPORATION.All Rights Reserved.
|
||||
#
|
||||
# NVIDIA CORPORATION and its licensors retain all intellectual property
|
||||
# and proprietary rights in and to this software, related documentation
|
||||
# and any modifications thereto.Any use, reproduction, disclosure or
|
||||
# distribution of this software and related documentation without an express
|
||||
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
||||
#
|
||||
###############################################################################*/
|
||||
|
||||
#include "FeatureVertexName.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
// TODO: We should read this from a file
|
||||
const LandmarkEOSMap LandmarkMapEOS[] = {
|
||||
{ 33, "chin bottom" },
|
||||
{ 225, "right eyebrow outer-corner" },
|
||||
{ 229, "right eyebrow between middle and outer corner" },
|
||||
{ 233, "right eyebrow middle, vertical middle" },
|
||||
{ 2086, "right eyebrow between middle and inner corner" },
|
||||
{ 157, "right eyebrow inner-corner" },
|
||||
{ 590, "left eyebrow inner-corner" },
|
||||
{ 2091, "left eyebrow between inner corner and middle" },
|
||||
{ 666, "left eyebrow middle" },
|
||||
{ 662, "left eyebrow between middle and outer corner" },
|
||||
{ 658, "left eyebrow outer-corner" },
|
||||
{ 2842, "bridge of the nose (parallel to upper eye lids)" },
|
||||
{ 379, "middle of the nose, a bit below the lower eye lids" },
|
||||
{ 272, "above nose-tip (1cm or so)" },
|
||||
{ 114, "nose-tip" },
|
||||
{ 100, "right nostril, below nose, nose-lip junction" },
|
||||
{ 2794, "nose-lip junction" },
|
||||
{ 270, "nose-lip junction" },
|
||||
{ 2797, "nose-lip junction" },
|
||||
{ 537, "left nostril, below nose, nose-lip junction" },
|
||||
{ 177, "right eye outer-corner" },
|
||||
{ 172, "right eye pupil top right (from subject's perspective)" },
|
||||
{ 191, "right eye pupil top left" },
|
||||
{ 181, "right eye inner-corner" },
|
||||
{ 173, "right eye pupil bottom left" },
|
||||
{ 174, "right eye pupil bottom right" },
|
||||
{ 614, "left eye inner-corner" },
|
||||
{ 624, "left eye pupil top right" },
|
||||
{ 605, "left eye pupil top left" },
|
||||
{ 610, "left eye outer-corner" },
|
||||
{ 607, "left eye pupil bottom left" },
|
||||
{ 606, "left eye pupil bottom right" },
|
||||
{ 398, "right mouth corner" },
|
||||
{ 315, "upper lip right top outer" },
|
||||
{ 413, "upper lip middle top right" },
|
||||
{ 329, "upper lip middle top" },
|
||||
{ 825, "upper lip middle top left" },
|
||||
{ 736, "upper lip left top outer" },
|
||||
{ 812, "left mouth corner" },
|
||||
{ 841, "lower lip left bottom outer" },
|
||||
{ 693, "lower lip middle bottom left" },
|
||||
{ 411, "lower lip middle bottom" },
|
||||
{ 264, "lower lip middle bottom right" },
|
||||
{ 431, "lower lip right bottom outer" },
|
||||
{ 416, "upper lip right bottom outer" },
|
||||
{ 423, "upper lip middle bottom" },
|
||||
{ 828, "upper lip left bottom outer" },
|
||||
{ 817, "lower lip left top outer" },
|
||||
{ 442, "lower lip middle top" },
|
||||
{ 404, "lower lip right top outer" },
|
||||
{ 0xFFFF, nullptr }
|
||||
};
|
||||
|
||||
static const LandmarksMap LandmarkMap[] = {
|
||||
{ 0, 0, "right contour point 1" },
|
||||
{ 1, 2, "right contour point 2" },
|
||||
{ 2, 4, "right contour point 3" },
|
||||
{ 3, 6, "right contour point 4" },
|
||||
{ 4, 8, "right contour point 5" },
|
||||
{ 5, 10, "right contour point 6" },
|
||||
{ 6, 12, "right contour point 7" },
|
||||
{ 7, 14, "right contour point 8" },
|
||||
{ 8, 16, "chin bottom" },
|
||||
{ 9, 18, "left contour point 1" },
|
||||
{ 10, 20, "left contour point 2" },
|
||||
{ 11, 22, "left contour point 3" },
|
||||
{ 12, 24, "left contour point 4" },
|
||||
{ 13, 26, "left contour point 5" },
|
||||
{ 14, 28, "left contour point 6" },
|
||||
{ 15, 30, "left contour point 7" },
|
||||
{ 16, 32, "left contour point 8" },
|
||||
{ 17, 33, "right eyebrow outer-corner" },
|
||||
{ 18, 34, "right eyebrow between middle and outer corner" },
|
||||
{ 19, 35, "right eyebrow middle, vertical middle" },
|
||||
{ 20, 36, "right eyebrow between middle and inner corner" },
|
||||
{ 21, 37, "right eyebrow inner-corner" },
|
||||
{ 22, 42, "left eyebrow inner-corner" },
|
||||
{ 23, 43, "left eyebrow between inner corner and middle" },
|
||||
{ 24, 44, "left eyebrow middle" },
|
||||
{ 25, 45, "left eyebrow between middle and outer corner" },
|
||||
{ 26, 46, "left eyebrow outer-corner" },
|
||||
{ 27, 51, "bridge of the nose (parallel to upper eye lids)" },
|
||||
{ 28, 52, "middle of the nose, a bit below the lower eye lids" },
|
||||
{ 29, 53, "above nose-tip (1cm or so)" },
|
||||
{ 30, 54, "nose-tip" },
|
||||
{ 31, 57, "right nostril, below nose, nose-lip junction" },
|
||||
{ 32, 58, "nose-lip junction" },
|
||||
{ 33, 59, "nose-lip junction" },
|
||||
{ 34, 60, "nose-lip junction" },
|
||||
{ 35, 61, "left nostril, below nose, nose-lip junction" },
|
||||
{ 36, 64, "right eye outer-corner" },
|
||||
{ 37, 65, "right eye pupil top right (from subject's perspective)" },
|
||||
{ 38, 67, "right eye pupil top left" },
|
||||
{ 39, 68, "right eye inner-corner" },
|
||||
{ 40, 69, "right eye pupil bottom left" },
|
||||
{ 41, 71, "right eye pupil bottom right" },
|
||||
{ 42, 81, "left eye inner-corner" },
|
||||
{ 43, 82, "left eye pupil top right" },
|
||||
{ 44, 84, "left eye pupil top left" },
|
||||
{ 45, 85, "left eye outer-corner" },
|
||||
{ 46, 86, "left eye pupil bottom left" },
|
||||
{ 47, 88, "left eye pupil bottom right" },
|
||||
{ 48, 98, "right mouth corner" },
|
||||
{ 49, 99, "upper lip right top outer" },
|
||||
{ 50, 100, "upper lip middle top right" },
|
||||
{ 51, 101, "upper lip middle top" },
|
||||
{ 52, 102, "upper lip middle top left" },
|
||||
{ 53, 103, "upper lip left top outer" },
|
||||
{ 54, 104, "left mouth corner" },
|
||||
{ 55, 105, "lower lip left bottom outer" },
|
||||
{ 56, 106, "lower lip middle bottom left" },
|
||||
{ 57, 107, "lower lip middle bottom" },
|
||||
{ 58, 108, "lower lip middle bottom right" },
|
||||
{ 59, 109, "lower lip right bottom outer" },
|
||||
{ 60, 110, "right inner mouth corner "},
|
||||
{ 61, 111, "upper lip right bottom outer" },
|
||||
{ 62, 112, "upper lip middle bottom" },
|
||||
{ 63, 113, "upper lip left bottom outer" },
|
||||
{ 64, 114, "left inner mouth corner"},
|
||||
{ 65, 115, "lower lip left top outer" },
|
||||
{ 66, 116, "lower lip middle top" },
|
||||
{ 67, 117, "lower lip right top outer" },
|
||||
{ 0xFFFF, 0xFFFF, nullptr }
|
||||
};
|
||||
|
||||
|
||||
unsigned short FindEOSLandmarkIndexFromName(const char* name)
|
||||
{
|
||||
if (!name)
|
||||
return 0xFFFF;
|
||||
switch (name[0]) {
|
||||
case '#': // 1-based index ...
|
||||
return (unsigned short)(strtol(name + 1, nullptr, 10) - 1); // ... gets converted into a 0-based index
|
||||
case '@': // 0-based index
|
||||
return (unsigned short)strtol(name + 1, nullptr, 10);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const LandmarkEOSMap* lmList = LandmarkMapEOS;
|
||||
for (; lmList->name != nullptr; ++lmList)
|
||||
if (!strcmp(name, lmList->name))
|
||||
break;
|
||||
return lmList->index;
|
||||
}
|
||||
|
||||
unsigned short FindLandmarkIndexFromName(const unsigned int numLandmarks, const char* name) {
|
||||
if (!name)
|
||||
return 0xFFFF;
|
||||
switch (name[0]) {
|
||||
case '#': // 1-based index ...
|
||||
return (unsigned short)(strtol(name + 1, nullptr, 10) - 1); // ... gets converted into a 0-based index
|
||||
case '@': // 0-based index
|
||||
return (unsigned short)strtol(name + 1, nullptr, 10);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const LandmarksMap* lmList = LandmarkMap;
|
||||
for (; lmList->name != nullptr; ++lmList)
|
||||
if (!strcmp(name, lmList->name))
|
||||
break;
|
||||
if (numLandmarks == 68) {
|
||||
return lmList->index_68;
|
||||
} else if (numLandmarks == 126) {
|
||||
return lmList->index_126;
|
||||
} else {
|
||||
return 0xFFFF;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user