diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectCelebrityController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectCelebrityController.java new file mode 100644 index 0000000..6b47204 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectCelebrityController.java @@ -0,0 +1,74 @@ +package com.heyu.api.controller.face; + + +import com.aliyun.facebody20191230.models.DetectCelebrityResponse; +import com.aliyun.facebody20191230.models.DetectCelebrityResponseBody; +import com.heyu.api.alibaba.handle.facebody.ADetectCelebrityHandle; +import com.heyu.api.alibaba.request.facebody.ADetectCelebrityRequest; +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.card.CharacterRecognizeRequest; +import com.heyu.api.request.face.DetectCelebrityReq; +import com.heyu.api.resp.face.DetectCelebrityResp; +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.Collection; +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DEMO&lang=JAVA&RegionId=cn-shanghai + * + * + *明星识别 + * + * DetectCelebrity + *功能描述 + * 明星识别能力可以识别图像中的明星人物。可以识别超过 2.7 万个明星人物。 + * + * + */ +@Slf4j +@RestController +@RequestMapping("/celebrity") +@NotIntercept +public class DetectCelebrityController extends BaseController { + + + @Autowired + private ADetectCelebrityHandle aDetectCelebrityHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(DetectCelebrityReq req) { + + DetectCelebrityResp resp = new DetectCelebrityResp(); + + ADetectCelebrityRequest request = new ADetectCelebrityRequest(); + request.setImageBase64(req.getImageBase64()); + request.setImageUrl(req.getImageUrl()); + ApiR aR = aDetectCelebrityHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + DetectCelebrityResponseBody responseBody = aR.getData().getBody(); + DetectCelebrityResponseBody.DetectCelebrityResponseBodyData responseBodyData = responseBody.getData(); + List resultsList = responseBodyData.getFaceRecognizeResults(); + if (CollectionUtils.isNotEmpty(resultsList)) { + List names = new ArrayList<>(); + for (DetectCelebrityResponseBody.DetectCelebrityResponseBodyDataFaceRecognizeResults detectCelebrityResponseBodyDataFaceRecognizeResults : resultsList) { + names.add(detectCelebrityResponseBodyDataFaceRecognizeResults.getName()); + } + resp.setNames(names); + return R.ok().setData(resp); + } + } + return R.error(aR.getErrorMsg()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectFaceController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectFaceController.java new file mode 100644 index 0000000..f512c60 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectFaceController.java @@ -0,0 +1,32 @@ +package com.heyu.api.controller.face; + + +import com.heyu.api.controller.BaseController; +import lombok.Data; + +/*** + * + *https://next.api.aliyun.com/api/facebody/2019-12-30/DetectFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai + * + * 人脸检测定位 + * + * DetectFace + * + * + * + * 人脸检测与五官定位能力可以检测图片中的人脸并给出每张人脸精准定位和 105 个关键点信息。输出人脸数量、 + * 人脸检测与五官定位能力可以检测图片中的人脸并给出每张人脸精准定位和 105 个关键点信息。输出人脸数量、 + * 人脸矩形坐标、人脸姿态、双瞳孔中心坐标、人脸置信度列表等信息,支持人脸遮挡、光照、模糊度、姿态、 + * 噪声综合质量评分,支持检测含有多张人脸的照片多种姿态角度判断。人脸矩形坐标、人脸姿态、双瞳孔中心坐标、 + * 人脸置信度列表等信息,支持人脸遮挡、光照、模糊度、姿态、噪声综合质量评分,支持检测含有多张人脸的照片多种姿态角度判断。 + * + * + */ +@Data +public class DetectFaceController extends BaseController { + + + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectInfraredLivingFaceController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectInfraredLivingFaceController.java new file mode 100644 index 0000000..d795c96 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectInfraredLivingFaceController.java @@ -0,0 +1,92 @@ +package com.heyu.api.controller.face; + + +import com.aliyun.facebody20191230.models.DetectInfraredLivingFaceResponse; +import com.aliyun.facebody20191230.models.DetectInfraredLivingFaceResponseBody; +import com.heyu.api.alibaba.handle.facebody.ADetectInfraredLivingFaceHandle; +import com.heyu.api.alibaba.request.facebody.ADetectInfraredLivingFaceRequest; +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.face.DetectInfraredLivingFaceReq; +import com.heyu.api.resp.face.DetectInfraredLivingFaceListResp; +import com.heyu.api.resp.face.DetectInfraredLivingFaceResp; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.aspectj.weaver.ISourceContext; +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.Collection; +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai + *红外人脸活体检测 + * + * DetectInfraredLivingFace + * + */ +@Slf4j +@RestController +@RequestMapping("/face") +@NotIntercept +public class DetectInfraredLivingFaceController extends BaseController { + + @Autowired + private ADetectInfraredLivingFaceHandle aDetectInfraredLivingFaceHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(ADetectInfraredLivingFaceRequest request) { + + List respList = new ArrayList<>(); + + + ApiR aR = aDetectInfraredLivingFaceHandle.handle(request); + + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + + DetectInfraredLivingFaceResponseBody responseBody = aR.getData().getBody(); + DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyData responseBodyData = responseBody.getData(); + List elementsList = responseBodyData.getElements(); + + List detectInfraredLivingFaceResps = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(elementsList)) { + for (DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyDataElements elements : elementsList) { + DetectInfraredLivingFaceResp resp = new DetectInfraredLivingFaceResp(); + + resp.setFaceNumber(elements.getFaceNumber()); + resp.setImageURL(elements.getImageURL()); + List detectInfraredLivingFaceListResps = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(elements.getResults())) { + for (DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyDataElementsResults result : elements.getResults()) { + + DetectInfraredLivingFaceListResp detectInfraredLivingFaceListResp = new DetectInfraredLivingFaceListResp(); + detectInfraredLivingFaceListResp.setRate(result.getRate()); + detectInfraredLivingFaceListResp.setSuggestion(result.getSuggestion()); + detectInfraredLivingFaceListResp.setLabel(result.getLabel()); + detectInfraredLivingFaceListResp.setMessageTips(result.getMessageTips()); + detectInfraredLivingFaceListResps.add(detectInfraredLivingFaceListResp); + + } + } + + resp.setFaceListRespList(detectInfraredLivingFaceListResps); + + respList.add(resp); + detectInfraredLivingFaceResps.add(resp); + } + return R.ok().setData(detectInfraredLivingFaceResps); + } + } + return R.error(aR.getErrorMsg()); + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectCelebrityReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectCelebrityReq.java new file mode 100644 index 0000000..1864188 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectCelebrityReq.java @@ -0,0 +1,24 @@ +package com.heyu.api.request.face; + + +import com.heyu.api.data.dto.BaseRequest; +import com.heyu.api.request.CommonReq; +import lombok.Data; + + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DOC&lang=JAVA&RegionId=cn-shanghai + * + * 明星识别 + * + * DetectCelebrity + */ +@Data +public class DetectCelebrityReq extends CommonReq { + + + + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectInfraredLivingFaceReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectInfraredLivingFaceReq.java new file mode 100644 index 0000000..a1bab73 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectInfraredLivingFaceReq.java @@ -0,0 +1,12 @@ +package com.heyu.api.request.face; + +import com.heyu.api.data.dto.BaseRequest; +import lombok.Data; + +@Data +public class DetectInfraredLivingFaceReq extends BaseRequest { + + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectCelebrityResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectCelebrityResp.java new file mode 100644 index 0000000..18e4257 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectCelebrityResp.java @@ -0,0 +1,27 @@ +package com.heyu.api.resp.face; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DOC&lang=JAVA&RegionId=cn-shanghai + *明星识别 + * + * DetectCelebrity + * + */ +@Data +public class DetectCelebrityResp extends BaseResp { + + /*** + * 识别出的人物名称。 + * + * 示例值: + * 张三 + */ + private List names = new ArrayList<>(); + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceListResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceListResp.java new file mode 100644 index 0000000..8fe4844 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceListResp.java @@ -0,0 +1,69 @@ +package com.heyu.api.resp.face; + + +import lombok.Data; + +import java.awt.datatransfer.FlavorEvent; + +/*** + * + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai + * + * + * 红外人脸活体检测 + * + * DetectInfraredLivingFace + * + */ +@Data +public class DetectInfraredLivingFaceListResp { + + /*** + * 检测结果的分类,取值包括: + * + * normal:活体照片 + * liveness:翻拍照片 + * 如果没有检测到人脸,则 Label 返回为 liveness。 + * + * 示例值: + * liveness + */ + private String label; + + + /*** + * 结果为该分类的概率,取值范围为[0.00-100.00]。取值越大表示属于该分类的概率越大。展开详情 + * + * 示例值: + * 83.3848 + */ + private Float rate; + + /*** + * 建议您执行的操作,取值范围如下: + * + * pass:图片中的活体对象来自直接拍摄,无需进行其余操作。 + * review:图片中的活体对象可能为攻击样本,建议您确认后再进行操作。 + * block:图片中的活体对象大概率为攻击样本,建议您执行后续操作。 + * 如果未检测到人脸,则 Suggestion 返回为 block。 + * + * 示例值: + * review + * + */ + private String suggestion; + + + /*** + * 提示信息,纯文字描述。 + * + * blurred, occluded or large angle face, please check.:如输入模糊、遮挡或大角度等的人脸。 + * no face detected, try again please.:如没有检测到人脸。 + * 示例值: + * blurred, occluded or large angle face, please check. + */ + private String messageTips; + +} + + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceResp.java new file mode 100644 index 0000000..26a7f2e --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectInfraredLivingFaceResp.java @@ -0,0 +1,27 @@ +package com.heyu.api.resp.face; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai + * + * 红外人脸活体检测 + * + * DetectInfraredLivingFace + */ +@Data +public class DetectInfraredLivingFaceResp extends BaseResp { + + + private Long faceNumber; + + private String imageURL; + + private List faceListRespList; + + +}