This commit is contained in:
quyixiao 2025-03-20 12:58:53 +08:00
parent f06f1ef7fd
commit 7da973567d
3 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,79 @@
package com.heyu.api.controller.objectdet;
import com.aliyun.objectdet20191230.models.DetectIPCObjectResponse;
import com.aliyun.objectdet20191230.models.DetectIPCObjectResponseBody;
import com.heyu.api.alibaba.handle.objectdet.ADetectIPCObjectHandle;
import com.heyu.api.alibaba.request.objectdet.ADetectIPCObjectRequest;
import com.heyu.api.controller.BaseController;
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.objectdet.DetectIPCObjectReq;
import com.heyu.api.resp.objectdet.DetectIPCObjectResp;
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/objectdet/2019-12-30/DetectIPCObject?tab=DOC
* <p>
* IPC图像目标检测
* <p>
* DetectIPCObject
*
* 应用场景
* 智能看家家中有人或宠物移动时可生成高精度视频实现检测提醒功能且可以关注宠物在家中的活动状况
* 智能看店可对门店起到安防作用尤其是在夜间可及时知道有人进店
* 智能看厂安全是厂区非常重要的事情对于人员在岗以及人员入侵可以起到良好的监管作用
* 特色优势
* 适用场景多适应多种广泛的日常场景的目标检测室内室外家居店铺商场白天夜间等
* 检测范围广可检测的目标大小范围广适用于大目标检测也适用于较远摄像头下的小目标检测
* 检测效率高高并发处理处理时间短
*/
@Slf4j
@RestController
@RequestMapping("/object")
@NotIntercept
public class DetectIPCObjectController extends BaseController {
@Autowired
private ADetectIPCObjectHandle aDetectIPCObjectHandle;
@RequestMapping("/ipc")
public R ipc(DetectIPCObjectReq req) {
List<DetectIPCObjectResp> respList = new ArrayList<>();
ADetectIPCObjectRequest aDetectIPCObjectRequest = new ADetectIPCObjectRequest();
aDetectIPCObjectRequest.setImageBase64(req.getImageBase64());
aDetectIPCObjectRequest.setImageUrl(req.getImageUrl());
ApiR<DetectIPCObjectResponse> aR = aDetectIPCObjectHandle.handle(aDetectIPCObjectRequest);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectIPCObjectResponseBody.DetectIPCObjectResponseBodyData responseBodyData = aR.getData().getBody().getData();
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
for (DetectIPCObjectResponseBody.DetectIPCObjectResponseBodyDataElements element : responseBodyData.getElements()) {
DetectIPCObjectResp resp = new DetectIPCObjectResp();
resp.setScore(element.getScore());
resp.setType(element.getType());
respList.add(resp);
}
}
return R.ok().setData(respList);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,8 @@
package com.heyu.api.request.objectdet;
import com.heyu.api.request.CommonReq;
import lombok.Data;
@Data
public class DetectIPCObjectReq extends CommonReq {
}

View File

@ -0,0 +1,29 @@
package com.heyu.api.resp.objectdet;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectIPCObjectResp extends BaseResp {
/***
* 检测框的置信度取值范围[0.0,1.0]
*
* 示例值:
* 0.7138671875
*/
public Float score;
/**
* 检测框对应的物体名称取值如下
*
* PERSON人物
* VEHICLE车辆
* CAT
* DOG
* 示例值:
* DOG
*/
public String type;
}