提交修改
This commit is contained in:
parent
619aca0b0e
commit
c04a19c021
@ -0,0 +1,64 @@
|
||||
package com.heyu.api.controller.imageseg;
|
||||
|
||||
|
||||
import com.aliyun.imageseg20191230.models.ChangeSkyResponse;
|
||||
import com.aliyun.imageseg20191230.models.ChangeSkyResponseBody;
|
||||
import com.heyu.api.alibaba.handle.imageseg.AChangeSkyHandle;
|
||||
import com.heyu.api.alibaba.request.imageseg.AChangeSkyRequest;
|
||||
import com.heyu.api.controller.BaseController;
|
||||
import com.heyu.api.data.annotation.CacheResult;
|
||||
import com.heyu.api.data.annotation.NotIntercept;
|
||||
import com.heyu.api.data.utils.ApiR;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.request.imageseg.ChangeSkyReq;
|
||||
import com.heyu.api.resp.imageseg.ChangeSkyResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
||||
/***
|
||||
*https://next.api.aliyun.com/api/imageseg/2019-12-30/ChangeSky
|
||||
*
|
||||
*天空替换 ChangeSky
|
||||
*
|
||||
* 功能描述
|
||||
* 输入两种图像,天空替换能力可以将参考图 B 的天空样式替换到目标图 A 中,从而改变目标图 A 的天空样式,实现换天功能。 关于该接口功能的示例图如下
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/image")
|
||||
@NotIntercept
|
||||
public class ChangeSkyController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private AChangeSkyHandle aChangeSkyHandle;
|
||||
|
||||
|
||||
@RequestMapping("/changeSky")
|
||||
@CacheResult
|
||||
public R changeSky(ChangeSkyReq request) {
|
||||
ChangeSkyResp resp = new ChangeSkyResp();
|
||||
|
||||
AChangeSkyRequest aChangeSkyRequest = new AChangeSkyRequest();
|
||||
aChangeSkyRequest.setImageUrl(request.getImageUrl());
|
||||
aChangeSkyRequest.setImageBase64(request.getImageBase64());
|
||||
aChangeSkyRequest.setReplaceImageBase64(request.getReplaceImageBase64());
|
||||
aChangeSkyRequest.setReplaceImageURL(request.getReplaceImageURL());
|
||||
ApiR<ChangeSkyResponse> aR = aChangeSkyHandle.handle(aChangeSkyRequest);
|
||||
|
||||
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
ChangeSkyResponseBody.ChangeSkyResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
resp.setImageURL(responseBodyData.getImageURL());
|
||||
return R.ok().setData(resp);
|
||||
}
|
||||
return R.error(aR.getErrorMsg());
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.heyu.api.controller.imageseg;
|
||||
|
||||
|
||||
import com.aliyun.imageseg20191230.models.ParseFaceResponse;
|
||||
import com.aliyun.imageseg20191230.models.ParseFaceResponseBody;
|
||||
import com.heyu.api.alibaba.handle.imageseg.AParseFaceHandle;
|
||||
import com.heyu.api.alibaba.request.imageseg.AParseFaceRequest;
|
||||
import com.heyu.api.controller.BaseController;
|
||||
import com.heyu.api.data.annotation.CacheResult;
|
||||
import com.heyu.api.data.annotation.NotIntercept;
|
||||
import com.heyu.api.data.utils.ApiR;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.request.imageseg.ParseFaceReq;
|
||||
import com.heyu.api.resp.imageseg.ParseFaceDataElements;
|
||||
import com.heyu.api.resp.imageseg.ParseFaceResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/***
|
||||
* https://next.api.aliyun.com/api/imageseg/2019-12-30/ParseFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai
|
||||
*
|
||||
*五官分割 ParseFace
|
||||
*
|
||||
*
|
||||
*功能描述
|
||||
* 五官分割能力可以检测输入的人脸正面图像,对眼睛、鼻子、嘴进行像素级语义分割。
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/face")
|
||||
@NotIntercept
|
||||
public class ParseFaceController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private AParseFaceHandle parseFaceHandle;
|
||||
|
||||
|
||||
@RequestMapping("/parse")
|
||||
@CacheResult
|
||||
public R changeSky(ParseFaceReq request) {
|
||||
ParseFaceResp resp = new ParseFaceResp();
|
||||
AParseFaceRequest aParseFaceRequest = new AParseFaceRequest();
|
||||
aParseFaceRequest.setImageBase64(request.getImageBase64());
|
||||
aParseFaceRequest.setImageUrl(request.getImageUrl());
|
||||
|
||||
ApiR<ParseFaceResponse> aR = parseFaceHandle.handle(aParseFaceRequest);
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
ParseFaceResponseBody.ParseFaceResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
|
||||
resp.setOriginImageURL(responseBodyData.getOriginImageURL());
|
||||
List<ParseFaceDataElements> parseFaceDataElements = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
|
||||
for (ParseFaceResponseBody.ParseFaceResponseBodyDataElements element : responseBodyData.getElements()) {
|
||||
|
||||
ParseFaceDataElements elements = new ParseFaceDataElements();
|
||||
elements.setName(element.getName());
|
||||
elements.setImageURL(element.getImageURL());
|
||||
|
||||
parseFaceDataElements.add(elements);
|
||||
}
|
||||
}
|
||||
resp.setParseFaceDataElements(parseFaceDataElements);
|
||||
return R.ok().setData(resp);
|
||||
}
|
||||
return R.error();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package com.heyu.api.controller.imageseg;
|
||||
|
||||
|
||||
import com.aliyun.imageseg20191230.models.SegmentBodyResponse;
|
||||
import com.aliyun.imageseg20191230.models.SegmentBodyResponseBody;
|
||||
import com.heyu.api.alibaba.handle.imageseg.ASegmentBodyHandle;
|
||||
import com.heyu.api.alibaba.request.imageseg.ASegmentBodyRequest;
|
||||
import com.heyu.api.controller.BaseController;
|
||||
import com.heyu.api.data.annotation.CacheResult;
|
||||
import com.heyu.api.data.annotation.NotIntercept;
|
||||
import com.heyu.api.data.utils.ApiR;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.request.imageseg.SegmentBodyReq;
|
||||
import com.heyu.api.resp.imageseg.SegmentBodyResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/***
|
||||
* https://next.api.aliyun.com/api/imageseg/2019-12-30/SegmentBody?tab=DOC&RegionId=cn-shanghai
|
||||
*
|
||||
*人体分割
|
||||
*
|
||||
* SegmentBody
|
||||
*
|
||||
*
|
||||
* 功能描述
|
||||
* 人体分割能力用于识别输入图像中的人体轮廓,与背景进行分离,返回分割后的前景人像图(4 通道)。本功能适用于真人图片,不适用于卡通图片。 关于该接口功能的示例图如下:
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/body")
|
||||
@NotIntercept
|
||||
public class SegmentBodyController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ASegmentBodyHandle segmentBodyHandle;
|
||||
|
||||
@RequestMapping("/segment")
|
||||
@CacheResult
|
||||
public R changeSky(SegmentBodyReq request) {
|
||||
SegmentBodyResp resp = new SegmentBodyResp();
|
||||
|
||||
ASegmentBodyRequest aSegmentBodyRequest = new ASegmentBodyRequest();
|
||||
aSegmentBodyRequest.setReturnType(request.getReturnForm());
|
||||
aSegmentBodyRequest.setImageBase64(request.getImageBase64());
|
||||
aSegmentBodyRequest.setImageUrl(request.getImageUrl());
|
||||
|
||||
|
||||
ApiR<SegmentBodyResponse> aR = segmentBodyHandle.handle(aSegmentBodyRequest);
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
SegmentBodyResponseBody.SegmentBodyResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
resp.setImageURL(responseBodyData.getImageURL());
|
||||
return R.ok().setData(resp);
|
||||
}
|
||||
|
||||
|
||||
return R.error(aR.getErrorMsg());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
package com.heyu.api.controller.imageseg;
|
||||
|
||||
import com.aliyun.imageseg20191230.models.SegmentClothResponse;
|
||||
import com.aliyun.imageseg20191230.models.SegmentClothResponseBody;
|
||||
import com.heyu.api.alibaba.handle.imageseg.ASegmentClothHandle;
|
||||
import com.heyu.api.alibaba.request.imageseg.ASegmentClothRequest;
|
||||
import com.heyu.api.controller.BaseController;
|
||||
import com.heyu.api.data.annotation.CacheResult;
|
||||
import com.heyu.api.data.annotation.NotIntercept;
|
||||
import com.heyu.api.data.utils.ApiR;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.resp.imageseg.SegmentClothResp;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/***
|
||||
*
|
||||
*https://next.api.aliyun.com/api/imageseg/2019-12-30/SegmentCloth?tab=DOC&lang=JAVA&RegionId=cn-shanghai
|
||||
*
|
||||
*服饰分割
|
||||
*
|
||||
* SegmentCloth
|
||||
*
|
||||
* 功能描述
|
||||
* 服饰分割能力可以对输入人台服饰、真人服饰、纯服饰、虚拟人服饰等场景图片中的主体服饰进行像素级抠图,并返回抠图结果。服饰分割主要是针对图片中的服装进行精细化分割,服饰分割标准支持外套
|
||||
* 、上装(含内衬)、裤装、裙装、帽子、鞋子、包包品类分割,其他皮带、领带等装饰品等内容建议使用商品分割。 关于该接口功能的示例图如下: 输入原图(左)和输出结果图(右)
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/cloth")
|
||||
@NotIntercept
|
||||
public class SegmentClothController extends BaseController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private ASegmentClothHandle aSegmentClothHandle;
|
||||
|
||||
|
||||
@RequestMapping("/segment")
|
||||
@CacheResult
|
||||
public R changeSky(ASegmentClothRequest request) {
|
||||
List<SegmentClothResp> respList = new ArrayList<>();
|
||||
|
||||
ApiR<SegmentClothResponse> aR = aSegmentClothHandle.handle(request);
|
||||
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
|
||||
SegmentClothResponseBody.SegmentClothResponseBodyData responseBodyData = aR.getData().getBody().getData();
|
||||
|
||||
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
|
||||
for (SegmentClothResponseBody.SegmentClothResponseBodyDataElements element : responseBodyData.getElements()) {
|
||||
|
||||
SegmentClothResp resp = new SegmentClothResp();
|
||||
resp.setClassUrl(element.getClassUrl());
|
||||
resp.setImageURL(element.getImageURL());
|
||||
respList.add(resp);
|
||||
}
|
||||
return R.ok().setData(respList);
|
||||
}
|
||||
}
|
||||
return R.error(aR.getErrorMsg());
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.heyu.api.request.imageseg;
|
||||
|
||||
|
||||
import com.heyu.api.request.CommonReq;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ChangeSkyReq extends CommonReq {
|
||||
|
||||
|
||||
/**
|
||||
* 参考图 URL 地址。推荐使用上海地域的 OSS 链接,对于文件在本地或者非上海地域 OSS 链接的情况,请参见文件 URL 处理。
|
||||
*
|
||||
* 示例值:
|
||||
* http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/imageseg/ChangeSky/ChangeSky6.jpg
|
||||
*/
|
||||
private String replaceImageURL;
|
||||
|
||||
|
||||
|
||||
|
||||
private String replaceImageBase64;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.heyu.api.request.imageseg;
|
||||
|
||||
import com.heyu.api.request.CommonReq;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class ParseFaceReq extends CommonReq {
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.heyu.api.request.imageseg;
|
||||
|
||||
import com.heyu.api.request.CommonReq;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SegmentBodyReq extends CommonReq {
|
||||
|
||||
|
||||
/***
|
||||
* 指定返回的图像形式。
|
||||
*
|
||||
* 如果设置为mask,则返回单通道黑白图。
|
||||
*
|
||||
* 如果设置为crop,则返回裁剪之后的四通道 PNG 图(裁掉边缘空白区域)。
|
||||
*
|
||||
* 如果设置为whiteBK,则返回白底图。
|
||||
*
|
||||
* 如果不设置或者设置为其他值,则返回四通道 PNG 图。
|
||||
*
|
||||
* 示例值:
|
||||
* mask
|
||||
*
|
||||
*/
|
||||
private String returnForm;
|
||||
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
package com.heyu.api.request.imageseg;
|
||||
|
||||
public class SegmentClothReq {
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.heyu.api.resp.imageseg;
|
||||
|
||||
import com.heyu.api.resp.CommonImageUrlResp;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class ChangeSkyResp extends CommonImageUrlResp {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
package com.heyu.api.resp.imageseg;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class ParseFaceDataElements implements Serializable {
|
||||
/***
|
||||
* 抠图结果。 抠图之后返回四通道 PNG 图,无压缩,图像尺寸保持不变,图像体积会变大。
|
||||
*
|
||||
* 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。
|
||||
* 示例值:
|
||||
* http://vibktprfx-prod-prod-aic-gd-cn-shanghai.oss-cn-shanghai.aliyuncs.com/fivesensesegmenter/prod/560FA2E7-FDC6-59A5-ABDD-D62A05146734/skin/_18dd_20211231-040658.png?Expires=1640925418&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRp****&Signature=2g0M88wZl%2Bn4t4gzQX%2BTIskpWB****
|
||||
*/
|
||||
public String imageURL;
|
||||
|
||||
/***
|
||||
* 抠图结果 key 值。具体请参见下方表格说明。
|
||||
*
|
||||
* 示例值:
|
||||
* skin
|
||||
*/
|
||||
public String name;
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
package com.heyu.api.resp.imageseg;
|
||||
|
||||
import com.heyu.api.data.dto.BaseResp;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ParseFaceResp extends BaseResp {
|
||||
/***
|
||||
* 原始图像 URL 地址。
|
||||
*
|
||||
* 示例值:
|
||||
* http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/imageseg/ParseFace/ParseFace1.jpg
|
||||
*/
|
||||
private String originImageURL;
|
||||
|
||||
/***
|
||||
* 各个子元素的分割结果。
|
||||
*/
|
||||
|
||||
private List<ParseFaceDataElements> parseFaceDataElements;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
package com.heyu.api.resp.imageseg;
|
||||
|
||||
import com.heyu.api.resp.CommonImageUrlResp;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SegmentBodyResp extends CommonImageUrlResp {
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.heyu.api.resp.imageseg;
|
||||
|
||||
import com.heyu.api.data.dto.BaseResp;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class SegmentClothResp extends BaseResp {
|
||||
|
||||
/***
|
||||
* 根据用户输入的clothClass返回一个服饰类别对应的 URL。
|
||||
*
|
||||
* 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。
|
||||
* string
|
||||
* 根据用户输入的clothClass返回一个服饰类别对应的 URL。
|
||||
*
|
||||
* 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。
|
||||
* 示例值:
|
||||
* {'tops':http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/..,'hat':http://viapi-cn-shanghai-dha-segmenter...,...}
|
||||
*/
|
||||
public java.util.Map<String, String> classUrl;
|
||||
|
||||
|
||||
/***
|
||||
* 返回抠图结果图像 URL 地址。 抠图之后返回四通道 PNG 图,无压缩,图像尺寸保持不变,图像体积会变大。
|
||||
*
|
||||
* 说明 该 URL 地址为临时地址,有效期为 30 分钟,过期后将无法访问。若需要长时间或者永久保存文件,请在 30 分钟内访问 URL 地址,下载文件转存到自己的 OSS 或者其他存储空间。
|
||||
* 示例值:
|
||||
* http://viapi-cn-shanghai-dha-segmenter.oss-cn-shanghai.aliyuncs.com/upload/clothingsegmentation-2020-06-17-16-54-40-688c84cbbd-hnqfq/2020-6-18/invi__015924459307821000041_IIVHoM.png?Expires=1592447730&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRp****&Signature=Hy8pn3IQj8nuKN0LEaC57cee9L****
|
||||
*/
|
||||
public String imageURL;
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user