GetImageResult.cc 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. /*
  2. * Copyright 2009-2017 Alibaba Cloud All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <alibabacloud/imm/model/GetImageResult.h>
  17. #include <json/json.h>
  18. using namespace AlibabaCloud::Imm;
  19. using namespace AlibabaCloud::Imm::Model;
  20. GetImageResult::GetImageResult() :
  21. ServiceResult()
  22. {}
  23. GetImageResult::GetImageResult(const std::string &payload) :
  24. ServiceResult()
  25. {
  26. parse(payload);
  27. }
  28. GetImageResult::~GetImageResult()
  29. {}
  30. void GetImageResult::parse(const std::string &payload)
  31. {
  32. Json::Reader reader;
  33. Json::Value value;
  34. reader.parse(payload, value);
  35. setRequestId(value["RequestId"].asString());
  36. auto allFacesNode = value["Faces"]["FacesItem"];
  37. for (auto valueFacesFacesItem : allFacesNode)
  38. {
  39. FacesItem facesObject;
  40. if(!valueFacesFacesItem["FaceId"].isNull())
  41. facesObject.faceId = valueFacesFacesItem["FaceId"].asString();
  42. if(!valueFacesFacesItem["FaceConfidence"].isNull())
  43. facesObject.faceConfidence = std::stof(valueFacesFacesItem["FaceConfidence"].asString());
  44. if(!valueFacesFacesItem["Age"].isNull())
  45. facesObject.age = valueFacesFacesItem["Age"].asString();
  46. if(!valueFacesFacesItem["Gender"].isNull())
  47. facesObject.gender = valueFacesFacesItem["Gender"].asString();
  48. if(!valueFacesFacesItem["Emotion"].isNull())
  49. facesObject.emotion = valueFacesFacesItem["Emotion"].asString();
  50. if(!valueFacesFacesItem["Attractive"].isNull())
  51. facesObject.attractive = std::stof(valueFacesFacesItem["Attractive"].asString());
  52. if(!valueFacesFacesItem["GenderConfidence"].isNull())
  53. facesObject.genderConfidence = std::stof(valueFacesFacesItem["GenderConfidence"].asString());
  54. if(!valueFacesFacesItem["GroupId"].isNull())
  55. facesObject.groupId = valueFacesFacesItem["GroupId"].asString();
  56. if(!valueFacesFacesItem["FaceQuality"].isNull())
  57. facesObject.faceQuality = std::stof(valueFacesFacesItem["FaceQuality"].asString());
  58. auto faceAttributesNode = value["FaceAttributes"];
  59. if(!faceAttributesNode["Glasses"].isNull())
  60. facesObject.faceAttributes.glasses = faceAttributesNode["Glasses"].asString();
  61. if(!faceAttributesNode["Beard"].isNull())
  62. facesObject.faceAttributes.beard = faceAttributesNode["Beard"].asString();
  63. if(!faceAttributesNode["Race"].isNull())
  64. facesObject.faceAttributes.race = faceAttributesNode["Race"].asString();
  65. if(!faceAttributesNode["Mask"].isNull())
  66. facesObject.faceAttributes.mask = faceAttributesNode["Mask"].asString();
  67. if(!faceAttributesNode["GlassesConfidence"].isNull())
  68. facesObject.faceAttributes.glassesConfidence = std::stof(faceAttributesNode["GlassesConfidence"].asString());
  69. if(!faceAttributesNode["BeardConfidence"].isNull())
  70. facesObject.faceAttributes.beardConfidence = std::stof(faceAttributesNode["BeardConfidence"].asString());
  71. if(!faceAttributesNode["RaceConfidence"].isNull())
  72. facesObject.faceAttributes.raceConfidence = std::stof(faceAttributesNode["RaceConfidence"].asString());
  73. if(!faceAttributesNode["MaskConfidence"].isNull())
  74. facesObject.faceAttributes.maskConfidence = std::stof(faceAttributesNode["MaskConfidence"].asString());
  75. auto faceBoundaryNode = faceAttributesNode["FaceBoundary"];
  76. if(!faceBoundaryNode["Left"].isNull())
  77. facesObject.faceAttributes.faceBoundary.left = std::stoi(faceBoundaryNode["Left"].asString());
  78. if(!faceBoundaryNode["Top"].isNull())
  79. facesObject.faceAttributes.faceBoundary.top = std::stoi(faceBoundaryNode["Top"].asString());
  80. if(!faceBoundaryNode["Width"].isNull())
  81. facesObject.faceAttributes.faceBoundary.width = std::stoi(faceBoundaryNode["Width"].asString());
  82. if(!faceBoundaryNode["Height"].isNull())
  83. facesObject.faceAttributes.faceBoundary.height = std::stoi(faceBoundaryNode["Height"].asString());
  84. auto headPoseNode = faceAttributesNode["HeadPose"];
  85. if(!headPoseNode["Pitch"].isNull())
  86. facesObject.faceAttributes.headPose.pitch = std::stof(headPoseNode["Pitch"].asString());
  87. if(!headPoseNode["Roll"].isNull())
  88. facesObject.faceAttributes.headPose.roll = std::stof(headPoseNode["Roll"].asString());
  89. if(!headPoseNode["Yaw"].isNull())
  90. facesObject.faceAttributes.headPose.yaw = std::stof(headPoseNode["Yaw"].asString());
  91. auto emotionDetailsNode = value["EmotionDetails"];
  92. if(!emotionDetailsNode["HAPPY"].isNull())
  93. facesObject.emotionDetails.hAPPY = std::stof(emotionDetailsNode["HAPPY"].asString());
  94. if(!emotionDetailsNode["SAD"].isNull())
  95. facesObject.emotionDetails.sAD = std::stof(emotionDetailsNode["SAD"].asString());
  96. if(!emotionDetailsNode["ANGRY"].isNull())
  97. facesObject.emotionDetails.aNGRY = std::stof(emotionDetailsNode["ANGRY"].asString());
  98. if(!emotionDetailsNode["SURPRISED"].isNull())
  99. facesObject.emotionDetails.sURPRISED = std::stof(emotionDetailsNode["SURPRISED"].asString());
  100. if(!emotionDetailsNode["SCARED"].isNull())
  101. facesObject.emotionDetails.sCARED = std::stof(emotionDetailsNode["SCARED"].asString());
  102. if(!emotionDetailsNode["DISGUSTED"].isNull())
  103. facesObject.emotionDetails.dISGUSTED = std::stof(emotionDetailsNode["DISGUSTED"].asString());
  104. if(!emotionDetailsNode["CALM"].isNull())
  105. facesObject.emotionDetails.cALM = std::stof(emotionDetailsNode["CALM"].asString());
  106. faces_.push_back(facesObject);
  107. }
  108. auto allOCRNode = value["OCR"]["OCRItem"];
  109. for (auto valueOCROCRItem : allOCRNode)
  110. {
  111. OCRItem oCRObject;
  112. if(!valueOCROCRItem["OCRContents"].isNull())
  113. oCRObject.oCRContents = valueOCROCRItem["OCRContents"].asString();
  114. if(!valueOCROCRItem["OCRConfidence"].isNull())
  115. oCRObject.oCRConfidence = std::stof(valueOCROCRItem["OCRConfidence"].asString());
  116. auto oCRBoundaryNode = value["OCRBoundary"];
  117. if(!oCRBoundaryNode["Left"].isNull())
  118. oCRObject.oCRBoundary.left = std::stoi(oCRBoundaryNode["Left"].asString());
  119. if(!oCRBoundaryNode["Top"].isNull())
  120. oCRObject.oCRBoundary.top = std::stoi(oCRBoundaryNode["Top"].asString());
  121. if(!oCRBoundaryNode["Width"].isNull())
  122. oCRObject.oCRBoundary.width = std::stoi(oCRBoundaryNode["Width"].asString());
  123. if(!oCRBoundaryNode["Height"].isNull())
  124. oCRObject.oCRBoundary.height = std::stoi(oCRBoundaryNode["Height"].asString());
  125. oCR_.push_back(oCRObject);
  126. }
  127. auto allTagsNode = value["Tags"]["TagsItem"];
  128. for (auto valueTagsTagsItem : allTagsNode)
  129. {
  130. TagsItem tagsObject;
  131. if(!valueTagsTagsItem["TagName"].isNull())
  132. tagsObject.tagName = valueTagsTagsItem["TagName"].asString();
  133. if(!valueTagsTagsItem["TagConfidence"].isNull())
  134. tagsObject.tagConfidence = std::stof(valueTagsTagsItem["TagConfidence"].asString());
  135. if(!valueTagsTagsItem["TagLevel"].isNull())
  136. tagsObject.tagLevel = std::stoi(valueTagsTagsItem["TagLevel"].asString());
  137. if(!valueTagsTagsItem["ParentTagName"].isNull())
  138. tagsObject.parentTagName = valueTagsTagsItem["ParentTagName"].asString();
  139. tags_.push_back(tagsObject);
  140. }
  141. auto allCelebrityNode = value["Celebrity"]["CelebrityItem"];
  142. for (auto valueCelebrityCelebrityItem : allCelebrityNode)
  143. {
  144. CelebrityItem celebrityObject;
  145. if(!valueCelebrityCelebrityItem["CelebrityName"].isNull())
  146. celebrityObject.celebrityName = valueCelebrityCelebrityItem["CelebrityName"].asString();
  147. if(!valueCelebrityCelebrityItem["CelebrityGender"].isNull())
  148. celebrityObject.celebrityGender = valueCelebrityCelebrityItem["CelebrityGender"].asString();
  149. if(!valueCelebrityCelebrityItem["CelebrityConfidence"].isNull())
  150. celebrityObject.celebrityConfidence = std::stof(valueCelebrityCelebrityItem["CelebrityConfidence"].asString());
  151. if(!valueCelebrityCelebrityItem["CelebrityLibraryName"].isNull())
  152. celebrityObject.celebrityLibraryName = valueCelebrityCelebrityItem["CelebrityLibraryName"].asString();
  153. auto celebrityBoundaryNode = value["CelebrityBoundary"];
  154. if(!celebrityBoundaryNode["Left"].isNull())
  155. celebrityObject.celebrityBoundary.left = std::stoi(celebrityBoundaryNode["Left"].asString());
  156. if(!celebrityBoundaryNode["Top"].isNull())
  157. celebrityObject.celebrityBoundary.top = std::stoi(celebrityBoundaryNode["Top"].asString());
  158. if(!celebrityBoundaryNode["Width"].isNull())
  159. celebrityObject.celebrityBoundary.width = std::stoi(celebrityBoundaryNode["Width"].asString());
  160. if(!celebrityBoundaryNode["Height"].isNull())
  161. celebrityObject.celebrityBoundary.height = std::stoi(celebrityBoundaryNode["Height"].asString());
  162. celebrity_.push_back(celebrityObject);
  163. }
  164. auto addressNode = value["Address"];
  165. if(!addressNode["AddressLine"].isNull())
  166. address_.addressLine = addressNode["AddressLine"].asString();
  167. if(!addressNode["Country"].isNull())
  168. address_.country = addressNode["Country"].asString();
  169. if(!addressNode["Province"].isNull())
  170. address_.province = addressNode["Province"].asString();
  171. if(!addressNode["City"].isNull())
  172. address_.city = addressNode["City"].asString();
  173. if(!addressNode["District"].isNull())
  174. address_.district = addressNode["District"].asString();
  175. if(!addressNode["Township"].isNull())
  176. address_.township = addressNode["Township"].asString();
  177. if(!value["SetId"].isNull())
  178. setId_ = value["SetId"].asString();
  179. if(!value["ImageUri"].isNull())
  180. imageUri_ = value["ImageUri"].asString();
  181. if(!value["RemarksA"].isNull())
  182. remarksA_ = value["RemarksA"].asString();
  183. if(!value["RemarksB"].isNull())
  184. remarksB_ = value["RemarksB"].asString();
  185. if(!value["CreateTime"].isNull())
  186. createTime_ = value["CreateTime"].asString();
  187. if(!value["ModifyTime"].isNull())
  188. modifyTime_ = value["ModifyTime"].asString();
  189. if(!value["ImageWidth"].isNull())
  190. imageWidth_ = std::stoi(value["ImageWidth"].asString());
  191. if(!value["ImageHeight"].isNull())
  192. imageHeight_ = std::stoi(value["ImageHeight"].asString());
  193. if(!value["ImageFormat"].isNull())
  194. imageFormat_ = value["ImageFormat"].asString();
  195. if(!value["Exif"].isNull())
  196. exif_ = value["Exif"].asString();
  197. if(!value["FileSize"].isNull())
  198. fileSize_ = std::stoi(value["FileSize"].asString());
  199. if(!value["ImageTime"].isNull())
  200. imageTime_ = value["ImageTime"].asString();
  201. if(!value["Orientation"].isNull())
  202. orientation_ = value["Orientation"].asString();
  203. if(!value["SourceType"].isNull())
  204. sourceType_ = value["SourceType"].asString();
  205. if(!value["SourceUri"].isNull())
  206. sourceUri_ = value["SourceUri"].asString();
  207. if(!value["SourcePosition"].isNull())
  208. sourcePosition_ = value["SourcePosition"].asString();
  209. if(!value["FacesStatus"].isNull())
  210. facesStatus_ = value["FacesStatus"].asString();
  211. if(!value["FacesModifyTime"].isNull())
  212. facesModifyTime_ = value["FacesModifyTime"].asString();
  213. if(!value["Location"].isNull())
  214. location_ = value["Location"].asString();
  215. if(!value["OCRStatus"].isNull())
  216. oCRStatus_ = value["OCRStatus"].asString();
  217. if(!value["OCRModifyTime"].isNull())
  218. oCRModifyTime_ = value["OCRModifyTime"].asString();
  219. if(!value["OCRFailReason"].isNull())
  220. oCRFailReason_ = value["OCRFailReason"].asString();
  221. if(!value["FacesFailReason"].isNull())
  222. facesFailReason_ = value["FacesFailReason"].asString();
  223. if(!value["TagsFailReason"].isNull())
  224. tagsFailReason_ = value["TagsFailReason"].asString();
  225. if(!value["TagsModifyTime"].isNull())
  226. tagsModifyTime_ = value["TagsModifyTime"].asString();
  227. if(!value["CelebrityStatus"].isNull())
  228. celebrityStatus_ = value["CelebrityStatus"].asString();
  229. if(!value["CelebrityModifyTime"].isNull())
  230. celebrityModifyTime_ = value["CelebrityModifyTime"].asString();
  231. if(!value["CelebrityFailReason"].isNull())
  232. celebrityFailReason_ = value["CelebrityFailReason"].asString();
  233. if(!value["TagsStatus"].isNull())
  234. tagsStatus_ = value["TagsStatus"].asString();
  235. if(!value["RemarksC"].isNull())
  236. remarksC_ = value["RemarksC"].asString();
  237. if(!value["RemarksD"].isNull())
  238. remarksD_ = value["RemarksD"].asString();
  239. if(!value["ExternalId"].isNull())
  240. externalId_ = value["ExternalId"].asString();
  241. if(!value["AddressModifyTime"].isNull())
  242. addressModifyTime_ = value["AddressModifyTime"].asString();
  243. if(!value["AddressStatus"].isNull())
  244. addressStatus_ = value["AddressStatus"].asString();
  245. if(!value["AddressFailReason"].isNull())
  246. addressFailReason_ = value["AddressFailReason"].asString();
  247. }
  248. std::string GetImageResult::getModifyTime()const
  249. {
  250. return modifyTime_;
  251. }
  252. GetImageResult::Address GetImageResult::getAddress()const
  253. {
  254. return address_;
  255. }
  256. std::string GetImageResult::getSourceType()const
  257. {
  258. return sourceType_;
  259. }
  260. std::string GetImageResult::getSourceUri()const
  261. {
  262. return sourceUri_;
  263. }
  264. std::string GetImageResult::getFacesFailReason()const
  265. {
  266. return facesFailReason_;
  267. }
  268. std::string GetImageResult::getRemarksA()const
  269. {
  270. return remarksA_;
  271. }
  272. std::string GetImageResult::getAddressFailReason()const
  273. {
  274. return addressFailReason_;
  275. }
  276. std::string GetImageResult::getRemarksB()const
  277. {
  278. return remarksB_;
  279. }
  280. std::string GetImageResult::getAddressModifyTime()const
  281. {
  282. return addressModifyTime_;
  283. }
  284. std::string GetImageResult::getImageFormat()const
  285. {
  286. return imageFormat_;
  287. }
  288. std::string GetImageResult::getTagsFailReason()const
  289. {
  290. return tagsFailReason_;
  291. }
  292. std::string GetImageResult::getExif()const
  293. {
  294. return exif_;
  295. }
  296. std::string GetImageResult::getFacesModifyTime()const
  297. {
  298. return facesModifyTime_;
  299. }
  300. std::string GetImageResult::getRemarksC()const
  301. {
  302. return remarksC_;
  303. }
  304. std::string GetImageResult::getRemarksD()const
  305. {
  306. return remarksD_;
  307. }
  308. int GetImageResult::getImageWidth()const
  309. {
  310. return imageWidth_;
  311. }
  312. std::vector<GetImageResult::CelebrityItem> GetImageResult::getCelebrity()const
  313. {
  314. return celebrity_;
  315. }
  316. std::string GetImageResult::getSourcePosition()const
  317. {
  318. return sourcePosition_;
  319. }
  320. std::vector<GetImageResult::FacesItem> GetImageResult::getFaces()const
  321. {
  322. return faces_;
  323. }
  324. std::vector<GetImageResult::TagsItem> GetImageResult::getTags()const
  325. {
  326. return tags_;
  327. }
  328. std::string GetImageResult::getAddressStatus()const
  329. {
  330. return addressStatus_;
  331. }
  332. std::string GetImageResult::getFacesStatus()const
  333. {
  334. return facesStatus_;
  335. }
  336. std::string GetImageResult::getCreateTime()const
  337. {
  338. return createTime_;
  339. }
  340. std::string GetImageResult::getTagsModifyTime()const
  341. {
  342. return tagsModifyTime_;
  343. }
  344. std::string GetImageResult::getExternalId()const
  345. {
  346. return externalId_;
  347. }
  348. std::string GetImageResult::getImageUri()const
  349. {
  350. return imageUri_;
  351. }
  352. std::string GetImageResult::getOrientation()const
  353. {
  354. return orientation_;
  355. }
  356. std::string GetImageResult::getOCRStatus()const
  357. {
  358. return oCRStatus_;
  359. }
  360. std::string GetImageResult::getOCRModifyTime()const
  361. {
  362. return oCRModifyTime_;
  363. }
  364. std::string GetImageResult::getImageTime()const
  365. {
  366. return imageTime_;
  367. }
  368. std::string GetImageResult::getCelebrityModifyTime()const
  369. {
  370. return celebrityModifyTime_;
  371. }
  372. int GetImageResult::getImageHeight()const
  373. {
  374. return imageHeight_;
  375. }
  376. std::string GetImageResult::getTagsStatus()const
  377. {
  378. return tagsStatus_;
  379. }
  380. std::string GetImageResult::getOCRFailReason()const
  381. {
  382. return oCRFailReason_;
  383. }
  384. std::string GetImageResult::getCelebrityFailReason()const
  385. {
  386. return celebrityFailReason_;
  387. }
  388. std::string GetImageResult::getSetId()const
  389. {
  390. return setId_;
  391. }
  392. std::string GetImageResult::getCelebrityStatus()const
  393. {
  394. return celebrityStatus_;
  395. }
  396. std::vector<GetImageResult::OCRItem> GetImageResult::getOCR()const
  397. {
  398. return oCR_;
  399. }
  400. int GetImageResult::getFileSize()const
  401. {
  402. return fileSize_;
  403. }
  404. std::string GetImageResult::getLocation()const
  405. {
  406. return location_;
  407. }