提交修改

This commit is contained in:
quyixiao 2025-03-15 19:09:55 +08:00
parent f09e5eddb9
commit 3e5ca3c649
8 changed files with 282 additions and 4 deletions

View File

@ -14,7 +14,11 @@ import org.springframework.stereotype.Component;
/**
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectPedestrianIntrusion
* <p>
* 人体检测
* 行人入侵检测
*
* DetectPedestrianIntrusion
*
*
*/
@Component
@Slf4j

View File

@ -3,6 +3,8 @@ package com.heyu.api.alibaba.request.facebody;
import lombok.Data;
import java.util.List;
@Data
public class ADetectPedestrianIntrusionRequestDetectRegion {

View File

@ -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;
/***

View File

@ -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<ADetectPedestrianIntrusionRequestDetectRegion> 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<DetectPedestrianIntrusionResponse> 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());
}
}

View File

@ -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<DetectRegionDTO> detectRegionDTOList ;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}