diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/face/RecognizeExpressionController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/RecognizeExpressionController.java new file mode 100644 index 0000000..4a6e49b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/RecognizeExpressionController.java @@ -0,0 +1,73 @@ +package com.heyu.api.controller.face; + + +import com.aliyun.facebody20191230.models.RecognizeExpressionResponse; +import com.aliyun.facebody20191230.models.RecognizeExpressionResponseBody; +import com.heyu.api.alibaba.handle.facebody.ARecognizeExpressionHandle; +import com.heyu.api.alibaba.request.facebody.ARecognizeExpressionRequest; +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.RecognizeExpressionReq; +import com.heyu.api.resp.face.RecognizeExpressionResp; +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/facebody/2019-12-30/RecognizeExpression?RegionId=cn-shanghai&tab=DEMO&lang=JAVA + * + * 表情识别 + * + * RecognizeExpression + * + */ + +@Slf4j +@RestController +@RequestMapping("/face/expression") +@NotIntercept +public class RecognizeExpressionController extends BaseController { + + + @Autowired + private ARecognizeExpressionHandle aRecognizeExpressionHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(RecognizeExpressionReq req) { + List respList = new ArrayList<>(); + + ARecognizeExpressionRequest arecognizeExpressionRequest = new ARecognizeExpressionRequest(); + arecognizeExpressionRequest.setImageBase64(req.getImageBase64()); + arecognizeExpressionRequest.setImageUrl(req.getImageUrl()); + + ApiR aR = aRecognizeExpressionHandle.handle(arecognizeExpressionRequest); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeExpressionResponseBody.RecognizeExpressionResponseBodyData responseBodyData = aR.getData().getBody().getData(); + List elements = responseBodyData.getElements(); + if (CollectionUtils.isNotEmpty(elements)) { + for (RecognizeExpressionResponseBody.RecognizeExpressionResponseBodyDataElements element : elements) { + RecognizeExpressionResp recognizeExpressionResp = new RecognizeExpressionResp(); + + recognizeExpressionResp.setExpression(element.getExpression()); + recognizeExpressionResp.setFaceProbability(element.getFaceProbability()); + + respList.add(recognizeExpressionResp); + } + } + return R.ok().setData(respList); + } + return R.error(); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/face/RecognizeExpressionReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/face/RecognizeExpressionReq.java new file mode 100644 index 0000000..09b115d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/face/RecognizeExpressionReq.java @@ -0,0 +1,11 @@ +package com.heyu.api.request.face; + + +import com.heyu.api.request.CommonReq; +import lombok.Data; + +@Data +public class RecognizeExpressionReq extends CommonReq { + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/RecognizeExpressionResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/RecognizeExpressionResp.java new file mode 100644 index 0000000..d6dccef --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/RecognizeExpressionResp.java @@ -0,0 +1,38 @@ +package com.heyu.api.resp.face; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class RecognizeExpressionResp extends BaseResp { + /*** + * 表情类别。取值如下: + * + * neutral:中性 + * happiness:高兴 + * surprise:惊讶 + * sadness:伤心 + * anger:生气 + * disgust:厌恶 + * fear:害怕 + * pouty:嘟嘴 + * grimace:做鬼脸 + * 示例值: + * happiness + */ + private String expression; + + + /*** + * 人脸的概率,取值范围为 0~1。 + * + * 示例值: + * 0.88330078125 + */ + private Float faceProbability; + + + + +}