1 #include <iostream>
2 #include "alibabacloud/core/AlibabaCloud.h"
3 #include "alibabacloud/imageseg/ImagesegClient.h"
4 #include "alibabacloud/core/CommonClient.h"
5 #include "model/common.h"
6
7 extern "C" {
8 using namespace std;
9 using namespace AlibabaCloud;
10 using namespace AlibabaCloud::Imageseg;
11
segmentCommonImage(char * url,AIModelCBFunc cb)12 int segmentCommonImage(char *url, AIModelCBFunc cb)
13 {
14 InitializeSdk();
15 string key = getAccessKey();
16 string secret = getAccessSecret();
17 ClientConfiguration configuration;
18 configuration.setRegionId(CLOUD_AI_REGION_ID);
19 configuration.setEndpoint(CLOUD_AI_IMAGESEG_ENDPOINT);
20 ImagesegClient client(key, secret, configuration);
21 Model::SegmentCommonImageRequest request;
22 string inImageURL;
23 ImageSegResultStruct result;
24 string outImageUrl;
25 int ret = 0;
26
27 inImageURL = url;
28 request.setScheme("http");
29 request.setMethod(HttpRequest::Method::Post);
30 request.setImageURL(inImageURL);
31 request.setReturnForm("whiteBK"); // set png format, mask or whiteBK, please refer to parameters of vision platform
32
33 auto outcome = client.segmentCommonImage(request);
34 cout << endl << "imageseg describeInstances returned:" << endl;
35 cout << "error code: " << outcome.error().errorCode() << endl;
36 cout << "requestId: " << outcome.result().requestId() << endl << endl;
37 cout << "image url: " << outcome.result().getData().imageURL << endl;
38
39 outImageUrl = outcome.result().getData().imageURL;
40 if (outImageUrl.size() > 0) {
41 result.common.url = (char *)outImageUrl.c_str();
42 result.common.imageLen = getResponseBodyByUrl(outcome.result().getData().imageURL.c_str(), &result.common.image);
43 if (result.common.image && cb) {
44 ret = cb((void *)&result);
45 }
46 }
47 ShutdownSdk();
48 return ret;
49 }
50
segmentFace(char * url,AIModelCBFunc cb)51 int segmentFace(char *url, AIModelCBFunc cb)
52 {
53 InitializeSdk();
54 string key = getAccessKey();
55 string secret = getAccessSecret();
56 ClientConfiguration configuration;
57 configuration.setRegionId(CLOUD_AI_REGION_ID);
58 configuration.setEndpoint(CLOUD_AI_IMAGESEG_ENDPOINT);
59 ImagesegClient client(key, secret, configuration);
60 Model::SegmentFaceRequest request;
61 string inImageURL;
62 ImageSegResultStruct result;
63 string outImageUrl;
64 int ret = 0, i = 0;
65
66 inImageURL = url;
67 request.setScheme("http");
68 request.setMethod(HttpRequest::Method::Post);
69 request.setImageURL(inImageURL);
70
71 auto outcome = client.segmentFace(request);
72 cout << endl << "imageseg describeInstances returned:" << endl;
73 cout << "error code: " << outcome.error().errorCode() << endl;
74 cout << "requestId: " << outcome.result().requestId() << endl << endl;
75
76 if (outcome.result().getData().elements.size() == 0)
77 return -1;
78 // for (i = 0; i < outcome.result().getData().elements.size(); i++)
79 {
80 cout << i << "image url: " << outcome.result().getData().elements[i].imageURL << endl;
81 cout << i << "width: " << outcome.result().getData().elements[i].width << endl;
82 cout << i << "height: " << outcome.result().getData().elements[i].height << endl;
83 cout << i << "x: " << outcome.result().getData().elements[i].x << endl;
84 cout << i << "y: " << outcome.result().getData().elements[i].y << endl;
85
86 outImageUrl = outcome.result().getData().elements[i].imageURL;
87 if (outImageUrl.size() > 0) {
88 result.face.url = (char *)outImageUrl.c_str();
89 result.face.imageLen = getResponseBodyByUrl(result.face.url, &result.face.image);
90 if (result.face.image && cb) {
91 result.face.location.x = outcome.result().getData().elements[i].x;
92 result.face.location.y = outcome.result().getData().elements[i].y;
93 result.face.location.w = outcome.result().getData().elements[i].width;
94 result.face.location.h = outcome.result().getData().elements[i].height;
95 ret = cb((void *)&result);
96 }
97 }
98 }
99 ShutdownSdk();
100 return ret;
101 }
102
103 }
104