diff --git a/api-third/src/main/java/com/heyu/api/alibaba/handle/facebody/ADetectPedestrianHandle.java b/api-third/src/main/java/com/heyu/api/alibaba/handle/facebody/ADetectPedestrianHandle.java index 54ac33e..c19e391 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/handle/facebody/ADetectPedestrianHandle.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/handle/facebody/ADetectPedestrianHandle.java @@ -14,7 +14,11 @@ import org.springframework.stereotype.Component; /** * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectPedestrianIntrusion *

- * 人体检测 + * 行人入侵检测 + * + * DetectPedestrianIntrusion + * + * */ @Component @Slf4j diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/facebody/ADetectPedestrianIntrusionRequestDetectRegion.java b/api-third/src/main/java/com/heyu/api/alibaba/request/facebody/ADetectPedestrianIntrusionRequestDetectRegion.java index 3741178..c16d818 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/facebody/ADetectPedestrianIntrusionRequestDetectRegion.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/facebody/ADetectPedestrianIntrusionRequestDetectRegion.java @@ -3,6 +3,8 @@ package com.heyu.api.alibaba.request.facebody; import lombok.Data; +import java.util.List; + @Data public class ADetectPedestrianIntrusionRequestDetectRegion { 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 index d795c96..b478887 100644 --- 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 @@ -10,18 +10,15 @@ 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; /*** diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectPedestrianIntrusionController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectPedestrianIntrusionController.java new file mode 100644 index 0000000..7cbaa73 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/face/DetectPedestrianIntrusionController.java @@ -0,0 +1,88 @@ +package com.heyu.api.controller.face; + + +import com.aliyun.facebody20191230.models.DetectPedestrianIntrusionResponse; +import com.aliyun.facebody20191230.models.DetectPedestrianIntrusionResponseBody; +import com.heyu.api.alibaba.handle.facebody.ADetectPedestrianIntrusionHandle; +import com.heyu.api.alibaba.request.facebody.ADetectPedestrianIntrusionRequest; +import com.heyu.api.alibaba.request.facebody.ADetectPedestrianIntrusionRequestDetectRegion; +import com.heyu.api.alibaba.request.facebody.ADetectPedestrianIntrusionRequestDetectRegionRect; +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.DeepfakeFaceReq; +import com.heyu.api.request.face.DetectPedestrianIntrusionReq; +import com.heyu.api.request.face.DetectRegionDTO; +import com.heyu.api.resp.face.DataElementsBox; +import com.heyu.api.resp.face.DetectPedestrianIntrusionResp; +import lombok.Data; +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; + +@Slf4j +@RestController +@RequestMapping("/pedestrian/intrusion") +@NotIntercept +public class DetectPedestrianIntrusionController extends BaseController { + + + @Autowired + private ADetectPedestrianIntrusionHandle aDetectPedestrianIntrusionHandle; + + + @RequestMapping("/check") + @CacheResult + public R check(DetectPedestrianIntrusionReq req) { + + DetectPedestrianIntrusionResp resp = new DetectPedestrianIntrusionResp(); + + ADetectPedestrianIntrusionRequest request = new ADetectPedestrianIntrusionRequest(); + request.setImageBase64(req.getImageBase64()); + request.setImageUrl(req.getImageUrl()); + + request.setRegionType("rectangle"); + List detectRegionList = new ArrayList<>(); + for (DetectRegionDTO detectRegionDTO : req.getDetectRegionDTOList()) { + ADetectPedestrianIntrusionRequestDetectRegion detectRegion = new ADetectPedestrianIntrusionRequestDetectRegion(); + + ADetectPedestrianIntrusionRequestDetectRegionRect rect = new ADetectPedestrianIntrusionRequestDetectRegionRect(); + rect.setLeft(detectRegionDTO.getLeft()); + rect.setRight(detectRegionDTO.getRight()); + rect.setTop(detectRegionDTO.getTop()); + rect.setBottom(detectRegionDTO.getBottom()); + detectRegion.setRect(rect); + detectRegionList.add(detectRegion); + } + + ApiR aR = aDetectPedestrianIntrusionHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + DetectPedestrianIntrusionResponseBody responseBody = aR.getData().getBody(); + DetectPedestrianIntrusionResponseBody.DetectPedestrianIntrusionResponseBodyData responseBodyData = responseBody.getData(); + if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) { + for (DetectPedestrianIntrusionResponseBody.DetectPedestrianIntrusionResponseBodyDataElements element : responseBodyData.getElements()) { + resp.setType(element.getType()); + resp.setScore(element.getScore()); + resp.setIsIntrude(element.getIsIntrude()); + DataElementsBox dataElementsBox = new DataElementsBox(); + DetectPedestrianIntrusionResponseBody.DetectPedestrianIntrusionResponseBodyDataElementsBox box = element.getBox(); + + dataElementsBox.setBottom(box.getBottom()); + dataElementsBox.setTop(box.getTop()); + dataElementsBox.setLeft(box.getLeft()); + dataElementsBox.setRight(box.getRight()); + resp.setBox(dataElementsBox); + return R.ok().setData(resp); + } + } + } + return R.error(aR.getErrorMsg()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectPedestrianIntrusionReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectPedestrianIntrusionReq.java new file mode 100644 index 0000000..6b3bb7b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectPedestrianIntrusionReq.java @@ -0,0 +1,29 @@ +package com.heyu.api.request.face; + + +import com.heyu.api.data.dto.BaseRequest; +import com.heyu.api.request.CommonReq; +import lombok.Data; + +import java.util.List; + + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectPedestrianIntrusion?RegionId=cn-shanghai + * + * + */ +@Data +public class DetectPedestrianIntrusionReq extends CommonReq { + + /*** + *行人入侵检测 + * + * DetectPedestrianIntrusion + * + * + */ + private List detectRegionDTOList ; + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectRegionDTO.java b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectRegionDTO.java new file mode 100644 index 0000000..c05c027 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/face/DetectRegionDTO.java @@ -0,0 +1,47 @@ +package com.heyu.api.request.face; + + +import lombok.Data; + +@Data +public class DetectRegionDTO { + + /*** + * 矩形区域的左上角横轴坐标。 + * + * 注意 该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 + * 示例值: + * 0 + * + */ + private Long left; + + + /*** + * 矩形区域的左上角纵轴坐标。 + * + * 注意 该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 + * 示例值: + * 0 + */ + private Long top; + + /*** + * 矩形区域的右下角横轴坐标。 + * + * 注意 该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 + * 示例值: + * 300 + */ + private Long right; + + /*** + * 矩形区域的右下角纵轴坐标。 + * + * 注意 该字段类型为 Long,在序列化/反序列化的过程中可能导致精度丢失,请注意数值不得大于 9007199254740991。 + * 示例值: + * 300 + */ + private Long bottom; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DataElementsBox.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DataElementsBox.java new file mode 100644 index 0000000..ce06724 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DataElementsBox.java @@ -0,0 +1,53 @@ +package com.heyu.api.resp.face; + + +import com.aliyun.tea.NameInMap; +import lombok.Data; + +/*** + * 检测框坐标。 + * + */ + +@Data +public class DataElementsBox { + + + /*** + * 矩形区域的右下角纵轴坐标。 + * + * 注意 请注意,该值为 Long 类型,在某些语言中可能存在精度丢失的风险,请小心使用。 + * 示例值: + * 551 + */ + public Long bottom; + + /*** + * 矩形区域的左上角横轴坐标。 + * + * 注意 请注意,该值为 Long 类型,在某些语言中可能存在精度丢失的风险,请小心使用。 + * 示例值: + * 175 + */ + public Long left; + + /*** + * 矩形区域的右下角横轴坐标。 + * + * 注意 请注意,该值为 Long 类型,在某些语言中可能存在精度丢失的风险,请小心使用。 + * 示例值: + * 418 + */ + public Long right; + + + /*** + * 矩形区域的右下角纵轴坐标。 + * + * 注意 请注意,该值为 Long 类型,在某些语言中可能存在精度丢失的风险,请小心使用。 + * 示例值: + * 551 + * + */ + public Long top; +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectPedestrianIntrusionResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectPedestrianIntrusionResp.java new file mode 100644 index 0000000..078280b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/face/DetectPedestrianIntrusionResp.java @@ -0,0 +1,58 @@ +package com.heyu.api.resp.face; + + +import com.aliyun.facebody20191230.models.DetectPedestrianIntrusionResponseBody; +import com.aliyun.tea.NameInMap; +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +/*** + * https://next.api.aliyun.com/api/facebody/2019-12-30/DetectPedestrianIntrusion?RegionId=cn-shanghai + * + * 行人入侵检测 + * + * DetectPedestrianIntrusion + */ +@Data +public class DetectPedestrianIntrusionResp extends BaseResp { + + /*** + * 检测框坐标。 + */ + public DataElementsBox box; + + + + + /*** + * 判断该人体是否入侵给定的区域或界线。 + * + * true:入侵给定区域或界限。 + * false:未入侵给定区域或界限。 + * 示例值: + * false + */ + + public Boolean isIntrude; + + /*** + * 检测框的置信度,范围为[0,1]。 + * + * 注意 请注意,该值为 Long 类型,在某些语言中可能存在精度丢失的风险,请小心使用。 + * 示例值: + * 0.950289249420166 + */ + public Long score; + + + /*** + * 检测框对应的人体,取值为 person。 + * + * 示例值: + * person + */ + public String type; + + + +}