Add GetImageQuality API.

This commit is contained in:
sdk-team
2020-09-04 09:04:23 +00:00
parent 5a6bd32d63
commit ebdf18def1
14 changed files with 471 additions and 0 deletions

View File

@@ -1,3 +1,7 @@
2020-09-04 Version: patch
- Add GetImageQuality API.
- Add more info as parameters to Images related APIs.
2020-09-03 Version: 1.36.632
- DescribeCameraStatistics add parameters.

View File

@@ -109,6 +109,8 @@ set(imm_public_header_model
include/alibabacloud/imm/model/GetImageCroppingSuggestionsResult.h
include/alibabacloud/imm/model/GetImageJobRequest.h
include/alibabacloud/imm/model/GetImageJobResult.h
include/alibabacloud/imm/model/GetImageQualityRequest.h
include/alibabacloud/imm/model/GetImageQualityResult.h
include/alibabacloud/imm/model/GetMediaMetaRequest.h
include/alibabacloud/imm/model/GetMediaMetaResult.h
include/alibabacloud/imm/model/GetOfficeConversionTaskRequest.h
@@ -264,6 +266,8 @@ set(imm_src
src/model/GetImageCroppingSuggestionsResult.cc
src/model/GetImageJobRequest.cc
src/model/GetImageJobResult.cc
src/model/GetImageQualityRequest.cc
src/model/GetImageQualityResult.cc
src/model/GetMediaMetaRequest.cc
src/model/GetMediaMetaResult.cc
src/model/GetOfficeConversionTaskRequest.cc

View File

@@ -110,6 +110,8 @@
#include "model/GetImageCroppingSuggestionsResult.h"
#include "model/GetImageJobRequest.h"
#include "model/GetImageJobResult.h"
#include "model/GetImageQualityRequest.h"
#include "model/GetImageQualityResult.h"
#include "model/GetMediaMetaRequest.h"
#include "model/GetMediaMetaResult.h"
#include "model/GetOfficeConversionTaskRequest.h"
@@ -315,6 +317,9 @@ namespace AlibabaCloud
typedef Outcome<Error, Model::GetImageJobResult> GetImageJobOutcome;
typedef std::future<GetImageJobOutcome> GetImageJobOutcomeCallable;
typedef std::function<void(const ImmClient*, const Model::GetImageJobRequest&, const GetImageJobOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetImageJobAsyncHandler;
typedef Outcome<Error, Model::GetImageQualityResult> GetImageQualityOutcome;
typedef std::future<GetImageQualityOutcome> GetImageQualityOutcomeCallable;
typedef std::function<void(const ImmClient*, const Model::GetImageQualityRequest&, const GetImageQualityOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetImageQualityAsyncHandler;
typedef Outcome<Error, Model::GetMediaMetaResult> GetMediaMetaOutcome;
typedef std::future<GetMediaMetaOutcome> GetMediaMetaOutcomeCallable;
typedef std::function<void(const ImmClient*, const Model::GetMediaMetaRequest&, const GetMediaMetaOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetMediaMetaAsyncHandler;
@@ -548,6 +553,9 @@ namespace AlibabaCloud
GetImageJobOutcome getImageJob(const Model::GetImageJobRequest &request)const;
void getImageJobAsync(const Model::GetImageJobRequest& request, const GetImageJobAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
GetImageJobOutcomeCallable getImageJobCallable(const Model::GetImageJobRequest& request) const;
GetImageQualityOutcome getImageQuality(const Model::GetImageQualityRequest &request)const;
void getImageQualityAsync(const Model::GetImageQualityRequest& request, const GetImageQualityAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
GetImageQualityOutcomeCallable getImageQualityCallable(const Model::GetImageQualityRequest& request) const;
GetMediaMetaOutcome getMediaMeta(const Model::GetMediaMetaRequest &request)const;
void getMediaMetaAsync(const Model::GetMediaMetaRequest& request, const GetMediaMetaAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
GetMediaMetaOutcomeCallable getMediaMetaCallable(const Model::GetMediaMetaRequest& request) const;

View File

@@ -0,0 +1,54 @@
/*
* Copyright 2009-2017 Alibaba Cloud All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYREQUEST_H_
#define ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYREQUEST_H_
#include <string>
#include <vector>
#include <alibabacloud/core/RpcServiceRequest.h>
#include <alibabacloud/imm/ImmExport.h>
namespace AlibabaCloud
{
namespace Imm
{
namespace Model
{
class ALIBABACLOUD_IMM_EXPORT GetImageQualityRequest : public RpcServiceRequest
{
public:
GetImageQualityRequest();
~GetImageQualityRequest();
std::string getProject()const;
void setProject(const std::string& project);
std::string getAccessKeyId()const;
void setAccessKeyId(const std::string& accessKeyId);
std::string getImageUri()const;
void setImageUri(const std::string& imageUri);
private:
std::string project_;
std::string accessKeyId_;
std::string imageUri_;
};
}
}
}
#endif // !ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYREQUEST_H_

View File

@@ -0,0 +1,66 @@
/*
* Copyright 2009-2017 Alibaba Cloud All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYRESULT_H_
#define ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYRESULT_H_
#include <string>
#include <vector>
#include <utility>
#include <alibabacloud/core/ServiceResult.h>
#include <alibabacloud/imm/ImmExport.h>
namespace AlibabaCloud
{
namespace Imm
{
namespace Model
{
class ALIBABACLOUD_IMM_EXPORT GetImageQualityResult : public ServiceResult
{
public:
struct ImageQuality
{
float clarityScore;
float compositionScore;
float contrastScore;
float color;
float exposure;
float overallScore;
float clarity;
float contrast;
float exposureScore;
float colorScore;
};
GetImageQualityResult();
explicit GetImageQualityResult(const std::string &payload);
~GetImageQualityResult();
ImageQuality getImageQuality()const;
std::string getImageUri()const;
protected:
void parse(const std::string &payload);
private:
ImageQuality imageQuality_;
std::string imageUri_;
};
}
}
}
#endif // !ALIBABACLOUD_IMM_MODEL_GETIMAGEQUALITYRESULT_H_

View File

@@ -42,6 +42,7 @@ namespace AlibabaCloud
{
std::string videoTagEnName;
std::string videoTagName;
int videoTagLevel;
float videoTagConfidence;
};
struct PersonsItem
@@ -62,23 +63,36 @@ namespace AlibabaCloud
int getVideoWidth()const;
std::string getSourceType()const;
std::string getSourceUri()const;
std::string getVideoInfo()const;
std::string getRemarksA()const;
std::string getVideoFrameTagsModifyTime()const;
std::string getRemarksB()const;
std::string getVideoFacesFailReason()const;
std::string getVideoFacesStatus()const;
std::string getRemarksC()const;
std::string getVideoOCRModifyTime()const;
std::string getRemarksD()const;
int getVideoHeight()const;
std::vector<PersonsItem> getPersons()const;
std::vector<CelebrityItem> getCelebrity()const;
std::string getSourcePosition()const;
std::string getVideoOCRFailReason()const;
std::string getVideoFrameTagsStatus()const;
std::string getVideoTagsFailReason()const;
std::string getVideoTagsModifyTime()const;
std::string getVideoOCRStatus()const;
int getVideoFrames()const;
std::string getProcessModifyTime()const;
std::string getVideoSTTModifyTime()const;
std::string getProcessFailReason()const;
std::string getCreateTime()const;
std::string getExternalId()const;
std::string getVideoSTTFailReason()const;
std::string getVideoUri()const;
std::string getVideoFormat()const;
std::string getVideoFrameTagsFailReason()const;
std::string getVideoSTTStatus()const;
std::string getVideoFacesModifyTime()const;
std::vector<VideoTagsItem> getVideoTags()const;
std::string getCelebrityModifyTime()const;
float getVideoDuration()const;
@@ -96,23 +110,36 @@ namespace AlibabaCloud
int videoWidth_;
std::string sourceType_;
std::string sourceUri_;
std::string videoInfo_;
std::string remarksA_;
std::string videoFrameTagsModifyTime_;
std::string remarksB_;
std::string videoFacesFailReason_;
std::string videoFacesStatus_;
std::string remarksC_;
std::string videoOCRModifyTime_;
std::string remarksD_;
int videoHeight_;
std::vector<PersonsItem> persons_;
std::vector<CelebrityItem> celebrity_;
std::string sourcePosition_;
std::string videoOCRFailReason_;
std::string videoFrameTagsStatus_;
std::string videoTagsFailReason_;
std::string videoTagsModifyTime_;
std::string videoOCRStatus_;
int videoFrames_;
std::string processModifyTime_;
std::string videoSTTModifyTime_;
std::string processFailReason_;
std::string createTime_;
std::string externalId_;
std::string videoSTTFailReason_;
std::string videoUri_;
std::string videoFormat_;
std::string videoFrameTagsFailReason_;
std::string videoSTTStatus_;
std::string videoFacesModifyTime_;
std::vector<VideoTagsItem> videoTags_;
std::string celebrityModifyTime_;
float videoDuration_;

View File

@@ -45,6 +45,10 @@ namespace AlibabaCloud
void setStartTime(const std::string& startTime);
std::string getAccessKeyId()const;
void setAccessKeyId(const std::string& accessKeyId);
std::string getNotifyEndpoint()const;
void setNotifyEndpoint(const std::string& notifyEndpoint);
std::string getNotifyTopicName()const;
void setNotifyTopicName(const std::string& notifyTopicName);
std::string getRemarksB()const;
void setRemarksB(const std::string& remarksB);
std::string getRemarksA()const;
@@ -72,6 +76,8 @@ namespace AlibabaCloud
std::string externalId_;
std::string startTime_;
std::string accessKeyId_;
std::string notifyEndpoint_;
std::string notifyTopicName_;
std::string remarksB_;
std::string remarksA_;
std::string endTime_;

View File

@@ -52,12 +52,16 @@ namespace AlibabaCloud
std::string modifyTime;
std::string createTime;
std::string externalId;
float maxAge;
std::string gender;
std::string remarksA;
float averageAge;
std::string remarksB;
std::string groupId;
std::string remarksArrayB;
std::string remarksC;
int imageCount;
float minAge;
std::string remarksD;
std::string remarksArrayA;
int faceCount;

View File

@@ -1635,6 +1635,42 @@ ImmClient::GetImageJobOutcomeCallable ImmClient::getImageJobCallable(const GetIm
return task->get_future();
}
ImmClient::GetImageQualityOutcome ImmClient::getImageQuality(const GetImageQualityRequest &request) const
{
auto endpointOutcome = endpointProvider_->getEndpoint();
if (!endpointOutcome.isSuccess())
return GetImageQualityOutcome(endpointOutcome.error());
auto outcome = makeRequest(endpointOutcome.result(), request);
if (outcome.isSuccess())
return GetImageQualityOutcome(GetImageQualityResult(outcome.result()));
else
return GetImageQualityOutcome(outcome.error());
}
void ImmClient::getImageQualityAsync(const GetImageQualityRequest& request, const GetImageQualityAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
{
auto fn = [this, request, handler, context]()
{
handler(this, request, getImageQuality(request), context);
};
asyncExecute(new Runnable(fn));
}
ImmClient::GetImageQualityOutcomeCallable ImmClient::getImageQualityCallable(const GetImageQualityRequest &request) const
{
auto task = std::make_shared<std::packaged_task<GetImageQualityOutcome()>>(
[this, request]()
{
return this->getImageQuality(request);
});
asyncExecute(new Runnable([task]() { (*task)(); }));
return task->get_future();
}
ImmClient::GetMediaMetaOutcome ImmClient::getMediaMeta(const GetMediaMetaRequest &request) const
{
auto endpointOutcome = endpointProvider_->getEndpoint();

View File

@@ -0,0 +1,62 @@
/*
* Copyright 2009-2017 Alibaba Cloud All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <alibabacloud/imm/model/GetImageQualityRequest.h>
using AlibabaCloud::Imm::Model::GetImageQualityRequest;
GetImageQualityRequest::GetImageQualityRequest() :
RpcServiceRequest("imm", "2017-09-06", "GetImageQuality")
{
setMethod(HttpRequest::Method::Post);
}
GetImageQualityRequest::~GetImageQualityRequest()
{}
std::string GetImageQualityRequest::getProject()const
{
return project_;
}
void GetImageQualityRequest::setProject(const std::string& project)
{
project_ = project;
setParameter("Project", project);
}
std::string GetImageQualityRequest::getAccessKeyId()const
{
return accessKeyId_;
}
void GetImageQualityRequest::setAccessKeyId(const std::string& accessKeyId)
{
accessKeyId_ = accessKeyId;
setParameter("AccessKeyId", accessKeyId);
}
std::string GetImageQualityRequest::getImageUri()const
{
return imageUri_;
}
void GetImageQualityRequest::setImageUri(const std::string& imageUri)
{
imageUri_ = imageUri;
setParameter("ImageUri", imageUri);
}

View File

@@ -0,0 +1,77 @@
/*
* Copyright 2009-2017 Alibaba Cloud All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <alibabacloud/imm/model/GetImageQualityResult.h>
#include <json/json.h>
using namespace AlibabaCloud::Imm;
using namespace AlibabaCloud::Imm::Model;
GetImageQualityResult::GetImageQualityResult() :
ServiceResult()
{}
GetImageQualityResult::GetImageQualityResult(const std::string &payload) :
ServiceResult()
{
parse(payload);
}
GetImageQualityResult::~GetImageQualityResult()
{}
void GetImageQualityResult::parse(const std::string &payload)
{
Json::Reader reader;
Json::Value value;
reader.parse(payload, value);
setRequestId(value["RequestId"].asString());
auto imageQualityNode = value["ImageQuality"];
if(!imageQualityNode["OverallScore"].isNull())
imageQuality_.overallScore = std::stof(imageQualityNode["OverallScore"].asString());
if(!imageQualityNode["ClarityScore"].isNull())
imageQuality_.clarityScore = std::stof(imageQualityNode["ClarityScore"].asString());
if(!imageQualityNode["Clarity"].isNull())
imageQuality_.clarity = std::stof(imageQualityNode["Clarity"].asString());
if(!imageQualityNode["ExposureScore"].isNull())
imageQuality_.exposureScore = std::stof(imageQualityNode["ExposureScore"].asString());
if(!imageQualityNode["Exposure"].isNull())
imageQuality_.exposure = std::stof(imageQualityNode["Exposure"].asString());
if(!imageQualityNode["ContrastScore"].isNull())
imageQuality_.contrastScore = std::stof(imageQualityNode["ContrastScore"].asString());
if(!imageQualityNode["Contrast"].isNull())
imageQuality_.contrast = std::stof(imageQualityNode["Contrast"].asString());
if(!imageQualityNode["ColorScore"].isNull())
imageQuality_.colorScore = std::stof(imageQualityNode["ColorScore"].asString());
if(!imageQualityNode["Color"].isNull())
imageQuality_.color = std::stof(imageQualityNode["Color"].asString());
if(!imageQualityNode["CompositionScore"].isNull())
imageQuality_.compositionScore = std::stof(imageQualityNode["CompositionScore"].asString());
if(!value["ImageUri"].isNull())
imageUri_ = value["ImageUri"].asString();
}
GetImageQualityResult::ImageQuality GetImageQualityResult::getImageQuality()const
{
return imageQuality_;
}
std::string GetImageQualityResult::getImageUri()const
{
return imageUri_;
}

View File

@@ -61,6 +61,8 @@ void GetVideoResult::parse(const std::string &payload)
videoTagsObject.videoTagEnName = valueVideoTagsVideoTagsItem["VideoTagEnName"].asString();
if(!valueVideoTagsVideoTagsItem["VideoTagConfidence"].isNull())
videoTagsObject.videoTagConfidence = std::stof(valueVideoTagsVideoTagsItem["VideoTagConfidence"].asString());
if(!valueVideoTagsVideoTagsItem["VideoTagLevel"].isNull())
videoTagsObject.videoTagLevel = std::stoi(valueVideoTagsVideoTagsItem["VideoTagLevel"].asString());
videoTags_.push_back(videoTagsObject);
}
auto allPersonsNode = value["Persons"]["PersonsItem"];
@@ -133,6 +135,32 @@ void GetVideoResult::parse(const std::string &payload)
remarksD_ = value["RemarksD"].asString();
if(!value["ExternalId"].isNull())
externalId_ = value["ExternalId"].asString();
if(!value["VideoFacesStatus"].isNull())
videoFacesStatus_ = value["VideoFacesStatus"].asString();
if(!value["VideoFacesFailReason"].isNull())
videoFacesFailReason_ = value["VideoFacesFailReason"].asString();
if(!value["VideoFacesModifyTime"].isNull())
videoFacesModifyTime_ = value["VideoFacesModifyTime"].asString();
if(!value["VideoFrameTagsStatus"].isNull())
videoFrameTagsStatus_ = value["VideoFrameTagsStatus"].asString();
if(!value["VideoFrameTagsFailReason"].isNull())
videoFrameTagsFailReason_ = value["VideoFrameTagsFailReason"].asString();
if(!value["VideoFrameTagsModifyTime"].isNull())
videoFrameTagsModifyTime_ = value["VideoFrameTagsModifyTime"].asString();
if(!value["VideoSTTStatus"].isNull())
videoSTTStatus_ = value["VideoSTTStatus"].asString();
if(!value["VideoSTTFailReason"].isNull())
videoSTTFailReason_ = value["VideoSTTFailReason"].asString();
if(!value["VideoSTTModifyTime"].isNull())
videoSTTModifyTime_ = value["VideoSTTModifyTime"].asString();
if(!value["VideoOCRStatus"].isNull())
videoOCRStatus_ = value["VideoOCRStatus"].asString();
if(!value["VideoOCRFailReason"].isNull())
videoOCRFailReason_ = value["VideoOCRFailReason"].asString();
if(!value["VideoOCRModifyTime"].isNull())
videoOCRModifyTime_ = value["VideoOCRModifyTime"].asString();
if(!value["VideoInfo"].isNull())
videoInfo_ = value["VideoInfo"].asString();
}
@@ -161,21 +189,46 @@ std::string GetVideoResult::getSourceUri()const
return sourceUri_;
}
std::string GetVideoResult::getVideoInfo()const
{
return videoInfo_;
}
std::string GetVideoResult::getRemarksA()const
{
return remarksA_;
}
std::string GetVideoResult::getVideoFrameTagsModifyTime()const
{
return videoFrameTagsModifyTime_;
}
std::string GetVideoResult::getRemarksB()const
{
return remarksB_;
}
std::string GetVideoResult::getVideoFacesFailReason()const
{
return videoFacesFailReason_;
}
std::string GetVideoResult::getVideoFacesStatus()const
{
return videoFacesStatus_;
}
std::string GetVideoResult::getRemarksC()const
{
return remarksC_;
}
std::string GetVideoResult::getVideoOCRModifyTime()const
{
return videoOCRModifyTime_;
}
std::string GetVideoResult::getRemarksD()const
{
return remarksD_;
@@ -201,6 +254,16 @@ std::string GetVideoResult::getSourcePosition()const
return sourcePosition_;
}
std::string GetVideoResult::getVideoOCRFailReason()const
{
return videoOCRFailReason_;
}
std::string GetVideoResult::getVideoFrameTagsStatus()const
{
return videoFrameTagsStatus_;
}
std::string GetVideoResult::getVideoTagsFailReason()const
{
return videoTagsFailReason_;
@@ -211,6 +274,11 @@ std::string GetVideoResult::getVideoTagsModifyTime()const
return videoTagsModifyTime_;
}
std::string GetVideoResult::getVideoOCRStatus()const
{
return videoOCRStatus_;
}
int GetVideoResult::getVideoFrames()const
{
return videoFrames_;
@@ -221,6 +289,11 @@ std::string GetVideoResult::getProcessModifyTime()const
return processModifyTime_;
}
std::string GetVideoResult::getVideoSTTModifyTime()const
{
return videoSTTModifyTime_;
}
std::string GetVideoResult::getProcessFailReason()const
{
return processFailReason_;
@@ -236,6 +309,11 @@ std::string GetVideoResult::getExternalId()const
return externalId_;
}
std::string GetVideoResult::getVideoSTTFailReason()const
{
return videoSTTFailReason_;
}
std::string GetVideoResult::getVideoUri()const
{
return videoUri_;
@@ -246,6 +324,21 @@ std::string GetVideoResult::getVideoFormat()const
return videoFormat_;
}
std::string GetVideoResult::getVideoFrameTagsFailReason()const
{
return videoFrameTagsFailReason_;
}
std::string GetVideoResult::getVideoSTTStatus()const
{
return videoSTTStatus_;
}
std::string GetVideoResult::getVideoFacesModifyTime()const
{
return videoFacesModifyTime_;
}
std::vector<GetVideoResult::VideoTagsItem> GetVideoResult::getVideoTags()const
{
return videoTags_;

View File

@@ -82,6 +82,28 @@ void IndexVideoRequest::setAccessKeyId(const std::string& accessKeyId)
setParameter("AccessKeyId", accessKeyId);
}
std::string IndexVideoRequest::getNotifyEndpoint()const
{
return notifyEndpoint_;
}
void IndexVideoRequest::setNotifyEndpoint(const std::string& notifyEndpoint)
{
notifyEndpoint_ = notifyEndpoint;
setParameter("NotifyEndpoint", notifyEndpoint);
}
std::string IndexVideoRequest::getNotifyTopicName()const
{
return notifyTopicName_;
}
void IndexVideoRequest::setNotifyTopicName(const std::string& notifyTopicName)
{
notifyTopicName_ = notifyTopicName;
setParameter("NotifyTopicName", notifyTopicName);
}
std::string IndexVideoRequest::getRemarksB()const
{
return remarksB_;

View File

@@ -69,6 +69,14 @@ void ListFaceGroupsResult::parse(const std::string &payload)
faceGroupsObject.externalId = valueFaceGroupsFaceGroupsItem["ExternalId"].asString();
if(!valueFaceGroupsFaceGroupsItem["ImageCount"].isNull())
faceGroupsObject.imageCount = std::stoi(valueFaceGroupsFaceGroupsItem["ImageCount"].asString());
if(!valueFaceGroupsFaceGroupsItem["Gender"].isNull())
faceGroupsObject.gender = valueFaceGroupsFaceGroupsItem["Gender"].asString();
if(!valueFaceGroupsFaceGroupsItem["MaxAge"].isNull())
faceGroupsObject.maxAge = std::stof(valueFaceGroupsFaceGroupsItem["MaxAge"].asString());
if(!valueFaceGroupsFaceGroupsItem["AverageAge"].isNull())
faceGroupsObject.averageAge = std::stof(valueFaceGroupsFaceGroupsItem["AverageAge"].asString());
if(!valueFaceGroupsFaceGroupsItem["MinAge"].isNull())
faceGroupsObject.minAge = std::stof(valueFaceGroupsFaceGroupsItem["MinAge"].asString());
auto groupCoverFaceNode = value["GroupCoverFace"];
if(!groupCoverFaceNode["FaceId"].isNull())
faceGroupsObject.groupCoverFace.faceId = groupCoverFaceNode["FaceId"].asString();