提交修改
This commit is contained in:
parent
7da973567d
commit
9cc3f6fa8d
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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(帽子)、lamp(灯)、cabinet/shelf(橱柜/ 架子)、car(汽车)、glasses(眼镜)、picture/frame(照片/图画)、street lights(街灯)、helmet(头盔)、pillow(枕头)、glove(手套)、potted plant(盆栽植物)、flower(花)、monitor(显示屏)、plants pot/vase(花盆)、boots(靴子)、umbrella(伞)、boat(小船)、flag(旗帜)、speaker(扬声器/话筒)、trash bin/can(垃圾桶)、backpack( 双肩背包)、sofa(沙发)、belt(腰带)、carpet(地毯)、coffee table(咖啡桌/茶几)、tie(领带)、bed(床)、traffic light(红绿灯)、necklace(项链)、mirror(镜子)、bicycle(自行车)、watch(手表)、horse(马)、traffic sign(交通标志)、stuffed animal(填充玩具动物)、motorbike/motorcycle(摩托车)、wild bird(鸟)、laptop(笔记本电脑)、cow(奶牛)、clock(时钟)、bus(公共汽车)、nightstand(床头柜)、sheep(绵羊)、traffic cone(锥形交通路标)、keyboard(键盘)、hockey stick(曲棍球球棍)、fan(电扇)、dog(狗)、blackboard/whiteboard(白板/黑板)、mouse(鼠标)、telephone(电话)、airplane(飞机)、skis(滑雪板)、soccer(英式足球)、combine with glove(棒球手套)、train(火车)、tent(帐篷)、sailboat(帆船)、kite(风筝)、computer box(计算机主机机箱)、elephant(大象)、stroller(折叠式婴儿车)、baseball bat(棒球棒)、skateboard(溜冰板)、surfboard(冲浪板)、cat(猫)、zebra(斑马)、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(四轮马车)、bear(熊)、globe(地球仪)、volleyball(排球)。
|
||||
*/
|
||||
public String type;
|
||||
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user