提交修改

This commit is contained in:
quyixiao 2025-03-20 21:36:24 +08:00
parent 7da973567d
commit 9cc3f6fa8d
14 changed files with 524 additions and 0 deletions

View File

@ -0,0 +1,82 @@
package com.heyu.api.controller.objectdet;
import com.aliyun.objectdet20191230.models.DetectKitchenAnimalsResponse;
import com.aliyun.objectdet20191230.models.DetectKitchenAnimalsResponseBody;
import com.heyu.api.alibaba.handle.objectdet.ADetectKitchenAnimalsHandle;
import com.heyu.api.alibaba.request.objectdet.ADetectKitchenAnimalsRequest;
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.resp.objectdet.DetectKitchenAnimalsResp;
import com.heyu.api.resp.objectdet.ElementsRectangles;
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/DetectKitchenAnimals?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
* 猫鼠识别
*
* DetectKitchenAnimals
*
* 功能描述
* 猫鼠识别能力基于视觉 AI 算法物联网和大数据分析技术可以检测出场景中是否有猫老鼠等动物实现实时预警
*应用场景
* 餐饮后厨或仓库针对后厨操作间食材存储仓库等场地实时检测是否有猫老鼠等动物并进行实时预警提醒工作人员进行相应处理防范
*
* 特色优势
* 识别准确基于大量场景样本的基础上对不同环境光线角度目标状态等进行针对性的训练学习算法模型识别精度高
* 适应性强算法模型场景适应性强可直接用于不同空间布局的场景各类餐厅后厨及用餐前场
* 自研算法通过多端多场景风险发现互通形成检测预警整改优化全链路闭环结合数据分析规则提取实现反哺生产进而优化模型性能
*
*/
@Slf4j
@RestController
@RequestMapping("/object")
@NotIntercept
public class DetectKitchenAnimalsController extends BaseController {
@Autowired
private ADetectKitchenAnimalsHandle aDetectKitchenAnimalsHandle;
@RequestMapping("/detectKitchen")
public R detectKitchen(ADetectKitchenAnimalsRequest req) {
List<DetectKitchenAnimalsResp> respList = new ArrayList<>();
ApiR<DetectKitchenAnimalsResponse> aR = aDetectKitchenAnimalsHandle.handle(req);
if(aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())){
DetectKitchenAnimalsResponseBody.DetectKitchenAnimalsResponseBodyData responseBodyData = aR.getData().getBody().getData();
if(CollectionUtils.isNotEmpty(responseBodyData.getElements())){
for (DetectKitchenAnimalsResponseBody.DetectKitchenAnimalsResponseBodyDataElements element : responseBodyData.getElements()) {
DetectKitchenAnimalsResp resp = new DetectKitchenAnimalsResp();
resp.setType(element.getType());
resp.setScore(element.getScore());
ElementsRectangles elementsRectangles = new ElementsRectangles();
DetectKitchenAnimalsResponseBody.DetectKitchenAnimalsResponseBodyDataElementsRectangles rectangles = element.getRectangles();
elementsRectangles.setLeft(rectangles.getLeft());
elementsRectangles.setTop(rectangles.getTop());
elementsRectangles.setWidth(rectangles.getWidth());
elementsRectangles.setHeight(rectangles.getHeight());
resp.setRectangles(elementsRectangles);
}
return R.ok().setData(respList);
}
}
return R.error();
}
}

View File

@ -0,0 +1,66 @@
package com.heyu.api.controller.objectdet;
import com.aliyun.objectdet20191230.models.DetectMainBodyResponse;
import com.aliyun.objectdet20191230.models.DetectMainBodyResponseBody;
import com.heyu.api.alibaba.handle.objectdet.ADetectMainBodyHandle;
import com.heyu.api.alibaba.request.objectdet.ADetectMainBodyRequest;
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.DetectMainBodyReq;
import com.heyu.api.resp.imageseg.DetectMainBodyResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* https://next.api.aliyun.com/api/objectdet/2019-12-30/DetectMainBody?tab=DEMO&lang=JAVA
* <p>
* 主体检测
* <p>
* DetectMainBody
*/
@Slf4j
@RestController
@RequestMapping("/main/body")
@NotIntercept
public class DetectMainBodyController extends BaseController {
@Autowired
private ADetectMainBodyHandle aDetectMainBodyHandle;
@RequestMapping("/detect")
public R ipc(DetectMainBodyReq req) {
DetectMainBodyResp detectMainBodyResp = new DetectMainBodyResp();
ADetectMainBodyRequest aDetectMainBodyRequest = new ADetectMainBodyRequest();
aDetectMainBodyRequest.setImageBase64(req.getImageBase64());
aDetectMainBodyRequest.setImageUrl(req.getImageUrl());
ApiR<DetectMainBodyResponse> aR = aDetectMainBodyHandle.handle(aDetectMainBodyRequest);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectMainBodyResponseBody.DetectMainBodyResponseBodyData responseBodyData = aR.getData().getBody().getData();
DetectMainBodyResponseBody.DetectMainBodyResponseBodyDataLocation responseBodyDataLocation = responseBodyData.getLocation();
detectMainBodyResp.setX(responseBodyDataLocation.getX());
detectMainBodyResp.setY(responseBodyDataLocation.getY());
detectMainBodyResp.setWidth(responseBodyDataLocation.getWidth());
detectMainBodyResp.setHeight(responseBodyDataLocation.getHeight());
return R.ok().setData(detectMainBodyResp);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,84 @@
package com.heyu.api.controller.objectdet;
import com.aliyun.objectdet20191230.models.DetectObjectResponse;
import com.aliyun.objectdet20191230.models.DetectObjectResponseBody;
import com.heyu.api.alibaba.handle.objectdet.ADetectObjectHandle;
import com.heyu.api.alibaba.request.objectdet.ADetectObjectRequest;
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.DetectObjectReq;
import com.heyu.api.resp.imageseg.DetectObjectResp;
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/DetectObject?tab=DOC
*
*物体检测
*
* DetectObject
*
*
* 功能描述
* 物体检测能力可以检测输入图像中的物体 关于该接口功能的示例图如下
*
*
*/
@Slf4j
@RestController
@RequestMapping("/object")
@NotIntercept
public class DetectObjectController extends BaseController {
@Autowired
private ADetectObjectHandle aDetectObjectHandle;
@RequestMapping("/detect")
public R ipc(DetectObjectReq req) {
List<DetectObjectResp> respList = new ArrayList<>();
ADetectObjectRequest request = new ADetectObjectRequest();
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
ApiR<DetectObjectResponse> aR = aDetectObjectHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectObjectResponseBody.DetectObjectResponseBodyData responseBodyData = aR.getData().getBody().getData();
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
for (DetectObjectResponseBody.DetectObjectResponseBodyDataElements element : responseBodyData.getElements()) {
DetectObjectResp detectObjectResp = new DetectObjectResp();
detectObjectResp.setType(element.getType());
detectObjectResp.setBoxes(element.getBoxes());
detectObjectResp.setType(element.getType());
respList.add(detectObjectResp);
}
return R.ok().setData(respList);
}
}
return R.error();
}
}

View File

@ -0,0 +1,63 @@
package com.heyu.api.controller.objectdet;
import com.aliyun.objectdet20191230.models.DetectWhiteBaseImageResponse;
import com.aliyun.objectdet20191230.models.DetectWhiteBaseImageResponseBody;
import com.heyu.api.alibaba.handle.objectdet.ADetectWhiteBaseImageHandle;
import com.heyu.api.alibaba.request.objectdet.ADetectWhiteBaseImageRequest;
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.DetectWhiteBaseImageReq;
import com.heyu.api.resp.objectdet.DetectWhiteBaseImageResp;
import lombok.extern.slf4j.Slf4j;
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/DetectObject?tab=DOC
*
*物体检测
*
* DetectObject
*
*/
@Slf4j
@RestController
@RequestMapping("/object")
@NotIntercept
public class DetectWhiteBaseImageController extends BaseController {
@Autowired
private ADetectWhiteBaseImageHandle aDetectWhiteBaseImageHandle;
@RequestMapping("/detectWhiteBase")
public R ipc(DetectWhiteBaseImageReq req) {
List<DetectWhiteBaseImageResp> respList = new ArrayList<>();
ADetectWhiteBaseImageRequest aDetectWhiteBaseImageRequest = new ADetectWhiteBaseImageRequest();
aDetectWhiteBaseImageRequest.setImageBase64(req.getImageBase64());
aDetectWhiteBaseImageRequest.setImageUrl(req.getImageUrl());
ApiR<DetectWhiteBaseImageResponse> aR = aDetectWhiteBaseImageHandle.handle(aDetectWhiteBaseImageRequest);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectWhiteBaseImageResponseBody.DetectWhiteBaseImageResponseBodyData responseBodyData = aR.getData().getBody().getData();
for (DetectWhiteBaseImageResponseBody.DetectWhiteBaseImageResponseBodyDataElements element : responseBodyData.getElements()) {
DetectWhiteBaseImageResp resp = new DetectWhiteBaseImageResp();
resp.setWhiteBase(element.getWhiteBase());
respList.add(resp);
}
return R.ok().setData(respList);
}
return R.error(aR.getErrorMsg());
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,42 @@
package com.heyu.api.resp.imageseg;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectMainBodyResp extends BaseResp {
/***
* 元素高度
*
* 示例值:
* 320
*/
public Integer height;
/***
* 元素宽度
*
* 示例值:
* 583
*/
public Integer width;
/**
* 元素 x 坐标
*
* 示例值:
* 28
*/
public Integer x;
/***
* 元素 y 坐标
*
* 示例值:
* 20
*/
public Integer y;
}

View File

@ -0,0 +1,41 @@
package com.heyu.api.resp.imageseg;
import com.heyu.api.request.CommonReq;
import lombok.Data;
import java.util.List;
@Data
public class DetectObjectResp extends CommonReq {
/***
* 检测框坐标格式为[left, top, right, bottom]
*
* 示例值:
* [468, 238, 531, 299]
*/
public List<Integer> boxes;
/**
* 检测到物体的置信度取值范围为 0~1
*
* 示例值:
* 0.266
*/
public Float score;
/**
* 检测框对应的物体名称具体类型如下所示
*
* 示例值:
* chair
*
* Type 类型包括
* human人体sneakers胶底运动鞋chair椅子hat帽子lampcabinet/shelf橱柜/ 架子car汽车glasses眼镜picture/frame照片/图画street lights街灯helmet头盔pillow枕头glove手套potted plant盆栽植物flowermonitor显示屏plants pot/vase花盆boots靴子umbrellaboat小船flag旗帜speaker扬声器/话筒trash bin/can垃圾桶backpack 双肩背包sofa沙发belt腰带carpet地毯coffee table咖啡桌/茶几tie领带bedtraffic light红绿灯necklace项链mirror镜子bicycle自行车watch手表horsetraffic sign交通标志stuffed animal填充玩具动物motorbike/motorcycle摩托车wild birdlaptop笔记本电脑cow奶牛clock时钟bus公共汽车nightstand床头柜sheep绵羊traffic cone锥形交通路标keyboard键盘hockey stick曲棍球球棍fan电扇dogblackboard/whiteboard白板/黑板mouse鼠标telephone电话airplane飞机skis滑雪板soccer英式足球combine with glove棒球手套train火车tent帐篷sailboat帆船kite风筝computer box计算机主机机箱elephant大象stroller折叠式婴儿车baseball bat棒球棒skateboard溜冰板surfboard冲浪板catzebra斑马sports car跑车giraffe长颈鹿radiator散热器tennis racket网球拍skating and skiing shoes溜冰鞋baseball棒球american football美式橄榄球basketball篮球printer打印机fire hydrant消防栓projector投影仪fire extinguisher灭火器tennis ball网球frisbee飞盘fire truck消防车helicopter直升飞机carriage四轮马车bearglobe地球仪volleyball排球
*/
public String type;
}

View File

@ -0,0 +1,32 @@
package com.heyu.api.resp.objectdet;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectKitchenAnimalsResp extends BaseResp {
public ElementsRectangles rectangles;
/***
* 检测结果概率值
*
* 示例值:
* 0.75105053
*
*/
public Float score;
/**
* 检测结果类型取值如下
*
* mouse老鼠
* cat
* 示例值:
* mouse
*/
public String type;
}

View File

@ -0,0 +1,9 @@
package com.heyu.api.resp.objectdet;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectObjectResp extends BaseResp {
}

View File

@ -0,0 +1,22 @@
package com.heyu.api.resp.objectdet;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectWhiteBaseImageResp extends BaseResp {
/**
* 是否白底图
*
* 0非白底
*
* 1白底
*
* 示例值:
* 0
*/
public Integer whiteBase;
}

View File

@ -0,0 +1,44 @@
package com.heyu.api.resp.objectdet;
import lombok.Data;
@Data
public class ElementsRectangles {
/**
* 高度单位像素
*
* 注意 请注意该值为 Long 类型在某些语言中可能存在精度丢失的风险请小心使用
* 示例值:
* 64
*/
public Long height;
/***
* 左上角 Y 坐标单位像素
*
* 注意 请注意该值为 Long 类型在某些语言中可能存在精度丢失的风险请小心使用
* 示例值:
* 292
*/
public Long left;
/**
* 左上角 X 坐标单位像素
*
* 注意 请注意该值为 Long 类型在某些语言中可能存在精度丢失的风险请小心使用
* 示例值:
* 1048
*/
public Long top;
/**
* 宽度单位像素
*
* 注意 请注意该值为 Long 类型在某些语言中可能存在精度丢失的风险请小心使用
* 示例值:
* 64
*/
public Long width;
}