From b84d1c59fa64ae7c0afdcd24b3e7e9ee52141cbc Mon Sep 17 00:00:00 2001 From: sdk-team Date: Fri, 20 Nov 2020 06:18:11 +0000 Subject: [PATCH] Update DetectFace. --- CHANGELOG | 4 + .../facebody/model/DetectFaceResult.h | 12 +++ .../facebody/model/RecognizeFaceResult.h | 16 +++- facebody/src/model/DetectFaceResult.cc | 41 +++++++-- facebody/src/model/RecognizeFaceResult.cc | 89 +++++++++++++------ 5 files changed, 124 insertions(+), 38 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 380c52eeb..7d01ebe54 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +2020-11-20 Version: patch +- Update DetectFace. +- Update RecognizeFace. + 2020-11-20 Version: patch - Add a new interface for asynchronous image translation. diff --git a/facebody/include/alibabacloud/facebody/model/DetectFaceResult.h b/facebody/include/alibabacloud/facebody/model/DetectFaceResult.h index 1942ea422..ab119f681 100644 --- a/facebody/include/alibabacloud/facebody/model/DetectFaceResult.h +++ b/facebody/include/alibabacloud/facebody/model/DetectFaceResult.h @@ -34,10 +34,22 @@ namespace AlibabaCloud public: struct Data { + struct Qualities + { + std::vector noiseList; + std::vector scoreList; + std::vector blurList; + std::vector maskList; + std::vector glassList; + std::vector fnfList; + std::vector poseList1; + std::vector illuList; + }; std::vector faceProbabilityList; int landmarkCount; std::vector faceRectangles; std::vector landmarks; + Qualities qualities; int faceCount; std::vector poseList; std::vector pupils; diff --git a/facebody/include/alibabacloud/facebody/model/RecognizeFaceResult.h b/facebody/include/alibabacloud/facebody/model/RecognizeFaceResult.h index 1ace4f285..10a41595b 100644 --- a/facebody/include/alibabacloud/facebody/model/RecognizeFaceResult.h +++ b/facebody/include/alibabacloud/facebody/model/RecognizeFaceResult.h @@ -34,13 +34,27 @@ namespace AlibabaCloud public: struct Data { + struct Qualities + { + std::vector noiseList; + std::vector scoreList; + std::vector blurList; + std::vector maskList; + std::vector glassList; + std::vector fnfList; + std::vector poseList1; + std::vector illuList; + }; + std::vector beuatyList; std::vector faceRectangles; + Qualities qualities; int denseFeatureLength; std::vector poseList; - std::vector pupils; std::vector genderList; + std::vector pupils; std::vector denseFeatures; std::vector faceProbabilityList; + std::vector hatList; int landmarkCount; std::vector ageList; std::vector glasses; diff --git a/facebody/src/model/DetectFaceResult.cc b/facebody/src/model/DetectFaceResult.cc index b24fc2b96..d0d9d1022 100644 --- a/facebody/src/model/DetectFaceResult.cc +++ b/facebody/src/model/DetectFaceResult.cc @@ -40,22 +40,47 @@ void DetectFaceResult::parse(const std::string &payload) reader.parse(payload, value); setRequestId(value["RequestId"].asString()); auto dataNode = value["Data"]; - if(!dataNode["FaceCount"].isNull()) - data_.faceCount = std::stoi(dataNode["FaceCount"].asString()); if(!dataNode["LandmarkCount"].isNull()) data_.landmarkCount = std::stoi(dataNode["LandmarkCount"].asString()); - auto allFaceRectangles = dataNode["FaceRectangles"]["FaceRectangle"]; - for (auto value : allFaceRectangles) - data_.faceRectangles.push_back(value.asString()); + if(!dataNode["FaceCount"].isNull()) + data_.faceCount = std::stoi(dataNode["FaceCount"].asString()); + auto qualitiesNode = dataNode["Qualities"]; + auto allNoiseList = qualitiesNode["NoiseList"]["Noise"]; + for (auto value : allNoiseList) + data_.qualities.noiseList.push_back(value.asString()); + auto allScoreList = qualitiesNode["ScoreList"]["Score"]; + for (auto value : allScoreList) + data_.qualities.scoreList.push_back(value.asString()); + auto allBlurList = qualitiesNode["BlurList"]["Blur"]; + for (auto value : allBlurList) + data_.qualities.blurList.push_back(value.asString()); + auto allMaskList = qualitiesNode["MaskList"]["Mask"]; + for (auto value : allMaskList) + data_.qualities.maskList.push_back(value.asString()); + auto allGlassList = qualitiesNode["GlassList"]["Glass"]; + for (auto value : allGlassList) + data_.qualities.glassList.push_back(value.asString()); + auto allFnfList = qualitiesNode["FnfList"]["Fnf"]; + for (auto value : allFnfList) + data_.qualities.fnfList.push_back(value.asString()); + auto allPoseList1 = qualitiesNode["PoseList"]["Pose"]; + for (auto value : allPoseList1) + data_.qualities.poseList1.push_back(value.asString()); + auto allIlluList = qualitiesNode["IlluList"]["Illu"]; + for (auto value : allIlluList) + data_.qualities.illuList.push_back(value.asString()); auto allFaceProbabilityList = dataNode["FaceProbabilityList"]["FaceProbability"]; for (auto value : allFaceProbabilityList) data_.faceProbabilityList.push_back(value.asString()); - auto allPoseList = dataNode["PoseList"]["Pose"]; - for (auto value : allPoseList) - data_.poseList.push_back(value.asString()); + auto allFaceRectangles = dataNode["FaceRectangles"]["FaceRectangle"]; + for (auto value : allFaceRectangles) + data_.faceRectangles.push_back(value.asString()); auto allLandmarks = dataNode["Landmarks"]["Landmark"]; for (auto value : allLandmarks) data_.landmarks.push_back(value.asString()); + auto allPoseList = dataNode["PoseList"]["Pose"]; + for (auto value : allPoseList) + data_.poseList.push_back(value.asString()); auto allPupils = dataNode["Pupils"]["Pupil"]; for (auto value : allPupils) data_.pupils.push_back(value.asString()); diff --git a/facebody/src/model/RecognizeFaceResult.cc b/facebody/src/model/RecognizeFaceResult.cc index 62b133190..415e7f223 100644 --- a/facebody/src/model/RecognizeFaceResult.cc +++ b/facebody/src/model/RecognizeFaceResult.cc @@ -40,42 +40,73 @@ void RecognizeFaceResult::parse(const std::string &payload) reader.parse(payload, value); setRequestId(value["RequestId"].asString()); auto dataNode = value["Data"]; - if(!dataNode["FaceCount"].isNull()) - data_.faceCount = std::stoi(dataNode["FaceCount"].asString()); if(!dataNode["LandmarkCount"].isNull()) data_.landmarkCount = std::stoi(dataNode["LandmarkCount"].asString()); if(!dataNode["DenseFeatureLength"].isNull()) data_.denseFeatureLength = std::stoi(dataNode["DenseFeatureLength"].asString()); - auto allFaceRectangles = dataNode["FaceRectangles"]["FaceRectangle"]; - for (auto value : allFaceRectangles) - data_.faceRectangles.push_back(value.asString()); - auto allFaceProbabilityList = dataNode["FaceProbabilityList"]["FaceProbability"]; - for (auto value : allFaceProbabilityList) - data_.faceProbabilityList.push_back(value.asString()); - auto allPoseList = dataNode["PoseList"]["Pose"]; - for (auto value : allPoseList) - data_.poseList.push_back(value.asString()); - auto allLandmarks = dataNode["Landmarks"]["Landmark"]; - for (auto value : allLandmarks) - data_.landmarks.push_back(value.asString()); - auto allPupils = dataNode["Pupils"]["Pupil"]; - for (auto value : allPupils) - data_.pupils.push_back(value.asString()); - auto allGenderList = dataNode["GenderList"]["Gender"]; - for (auto value : allGenderList) - data_.genderList.push_back(value.asString()); - auto allAgeList = dataNode["AgeList"]["Age"]; - for (auto value : allAgeList) - data_.ageList.push_back(value.asString()); - auto allExpressions = dataNode["Expressions"]["Expression"]; - for (auto value : allExpressions) - data_.expressions.push_back(value.asString()); - auto allGlasses = dataNode["Glasses"]["Glass"]; - for (auto value : allGlasses) - data_.glasses.push_back(value.asString()); + if(!dataNode["FaceCount"].isNull()) + data_.faceCount = std::stoi(dataNode["FaceCount"].asString()); + auto qualitiesNode = dataNode["Qualities"]; + auto allNoiseList = qualitiesNode["NoiseList"]["Noise"]; + for (auto value : allNoiseList) + data_.qualities.noiseList.push_back(value.asString()); + auto allScoreList = qualitiesNode["ScoreList"]["Score"]; + for (auto value : allScoreList) + data_.qualities.scoreList.push_back(value.asString()); + auto allBlurList = qualitiesNode["BlurList"]["Blur"]; + for (auto value : allBlurList) + data_.qualities.blurList.push_back(value.asString()); + auto allMaskList = qualitiesNode["MaskList"]["Mask"]; + for (auto value : allMaskList) + data_.qualities.maskList.push_back(value.asString()); + auto allGlassList = qualitiesNode["GlassList"]["Glass"]; + for (auto value : allGlassList) + data_.qualities.glassList.push_back(value.asString()); + auto allFnfList = qualitiesNode["FnfList"]["Fnf"]; + for (auto value : allFnfList) + data_.qualities.fnfList.push_back(value.asString()); + auto allPoseList1 = qualitiesNode["PoseList"]["Pose"]; + for (auto value : allPoseList1) + data_.qualities.poseList1.push_back(value.asString()); + auto allIlluList = qualitiesNode["IlluList"]["Illu"]; + for (auto value : allIlluList) + data_.qualities.illuList.push_back(value.asString()); auto allDenseFeatures = dataNode["DenseFeatures"]["DenseFeature"]; for (auto value : allDenseFeatures) data_.denseFeatures.push_back(value.asString()); + auto allFaceProbabilityList = dataNode["FaceProbabilityList"]["FaceProbability"]; + for (auto value : allFaceProbabilityList) + data_.faceProbabilityList.push_back(value.asString()); + auto allHatList = dataNode["HatList"]["Hat"]; + for (auto value : allHatList) + data_.hatList.push_back(value.asString()); + auto allAgeList = dataNode["AgeList"]["Age"]; + for (auto value : allAgeList) + data_.ageList.push_back(value.asString()); + auto allBeuatyList = dataNode["BeuatyList"]["Beauty"]; + for (auto value : allBeuatyList) + data_.beuatyList.push_back(value.asString()); + auto allFaceRectangles = dataNode["FaceRectangles"]["FaceRectangle"]; + for (auto value : allFaceRectangles) + data_.faceRectangles.push_back(value.asString()); + auto allGlasses = dataNode["Glasses"]["Glass"]; + for (auto value : allGlasses) + data_.glasses.push_back(value.asString()); + auto allLandmarks = dataNode["Landmarks"]["Landmark"]; + for (auto value : allLandmarks) + data_.landmarks.push_back(value.asString()); + auto allExpressions = dataNode["Expressions"]["Expression"]; + for (auto value : allExpressions) + data_.expressions.push_back(value.asString()); + auto allPoseList = dataNode["PoseList"]["Pose"]; + for (auto value : allPoseList) + data_.poseList.push_back(value.asString()); + auto allGenderList = dataNode["GenderList"]["Gender"]; + for (auto value : allGenderList) + data_.genderList.push_back(value.asString()); + auto allPupils = dataNode["Pupils"]["Pupil"]; + for (auto value : allPupils) + data_.pupils.push_back(value.asString()); }