提交修改

This commit is contained in:
quyixiao 2025-03-15 18:44:49 +08:00
parent 857005f036
commit f09e5eddb9
8 changed files with 357 additions and 0 deletions

View File

@ -0,0 +1,74 @@
package com.heyu.api.controller.face;
import com.aliyun.facebody20191230.models.DetectCelebrityResponse;
import com.aliyun.facebody20191230.models.DetectCelebrityResponseBody;
import com.heyu.api.alibaba.handle.facebody.ADetectCelebrityHandle;
import com.heyu.api.alibaba.request.facebody.ADetectCelebrityRequest;
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.card.CharacterRecognizeRequest;
import com.heyu.api.request.face.DetectCelebrityReq;
import com.heyu.api.resp.face.DetectCelebrityResp;
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.Collection;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DEMO&lang=JAVA&RegionId=cn-shanghai
*
*
*明星识别
*
* DetectCelebrity
*功能描述
* 明星识别能力可以识别图像中的明星人物可以识别超过 2.7 万个明星人物
*
*
*/
@Slf4j
@RestController
@RequestMapping("/celebrity")
@NotIntercept
public class DetectCelebrityController extends BaseController {
@Autowired
private ADetectCelebrityHandle aDetectCelebrityHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(DetectCelebrityReq req) {
DetectCelebrityResp resp = new DetectCelebrityResp();
ADetectCelebrityRequest request = new ADetectCelebrityRequest();
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
ApiR<DetectCelebrityResponse> aR = aDetectCelebrityHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectCelebrityResponseBody responseBody = aR.getData().getBody();
DetectCelebrityResponseBody.DetectCelebrityResponseBodyData responseBodyData = responseBody.getData();
List<DetectCelebrityResponseBody.DetectCelebrityResponseBodyDataFaceRecognizeResults> resultsList = responseBodyData.getFaceRecognizeResults();
if (CollectionUtils.isNotEmpty(resultsList)) {
List<String> names = new ArrayList<>();
for (DetectCelebrityResponseBody.DetectCelebrityResponseBodyDataFaceRecognizeResults detectCelebrityResponseBodyDataFaceRecognizeResults : resultsList) {
names.add(detectCelebrityResponseBodyDataFaceRecognizeResults.getName());
}
resp.setNames(names);
return R.ok().setData(resp);
}
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,32 @@
package com.heyu.api.controller.face;
import com.heyu.api.controller.BaseController;
import lombok.Data;
/***
*
*https://next.api.aliyun.com/api/facebody/2019-12-30/DetectFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
* 人脸检测定位
*
* DetectFace
*
*
*
* 人脸检测与五官定位能力可以检测图片中的人脸并给出每张人脸精准定位和 105 个关键点信息输出人脸数量
* 人脸检测与五官定位能力可以检测图片中的人脸并给出每张人脸精准定位和 105 个关键点信息输出人脸数量
* 人脸矩形坐标人脸姿态双瞳孔中心坐标人脸置信度列表等信息支持人脸遮挡光照模糊度姿态
* 噪声综合质量评分支持检测含有多张人脸的照片多种姿态角度判断人脸矩形坐标人脸姿态双瞳孔中心坐标
* 人脸置信度列表等信息支持人脸遮挡光照模糊度姿态噪声综合质量评分支持检测含有多张人脸的照片多种姿态角度判断
*
*
*/
@Data
public class DetectFaceController extends BaseController {
}

View File

@ -0,0 +1,92 @@
package com.heyu.api.controller.face;
import com.aliyun.facebody20191230.models.DetectInfraredLivingFaceResponse;
import com.aliyun.facebody20191230.models.DetectInfraredLivingFaceResponseBody;
import com.heyu.api.alibaba.handle.facebody.ADetectInfraredLivingFaceHandle;
import com.heyu.api.alibaba.request.facebody.ADetectInfraredLivingFaceRequest;
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.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;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*红外人脸活体检测
*
* DetectInfraredLivingFace
*
*/
@Slf4j
@RestController
@RequestMapping("/face")
@NotIntercept
public class DetectInfraredLivingFaceController extends BaseController {
@Autowired
private ADetectInfraredLivingFaceHandle aDetectInfraredLivingFaceHandle;
@RequestMapping("/recognize")
@CacheResult
public R recognize(ADetectInfraredLivingFaceRequest request) {
List<DetectInfraredLivingFaceResp> respList = new ArrayList<>();
ApiR<DetectInfraredLivingFaceResponse> aR = aDetectInfraredLivingFaceHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectInfraredLivingFaceResponseBody responseBody = aR.getData().getBody();
DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyData responseBodyData = responseBody.getData();
List<DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyDataElements> elementsList = responseBodyData.getElements();
List<DetectInfraredLivingFaceResp> detectInfraredLivingFaceResps = new ArrayList<>();
if (CollectionUtils.isNotEmpty(elementsList)) {
for (DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyDataElements elements : elementsList) {
DetectInfraredLivingFaceResp resp = new DetectInfraredLivingFaceResp();
resp.setFaceNumber(elements.getFaceNumber());
resp.setImageURL(elements.getImageURL());
List<DetectInfraredLivingFaceListResp> detectInfraredLivingFaceListResps = new ArrayList<>();
if (CollectionUtils.isNotEmpty(elements.getResults())) {
for (DetectInfraredLivingFaceResponseBody.DetectInfraredLivingFaceResponseBodyDataElementsResults result : elements.getResults()) {
DetectInfraredLivingFaceListResp detectInfraredLivingFaceListResp = new DetectInfraredLivingFaceListResp();
detectInfraredLivingFaceListResp.setRate(result.getRate());
detectInfraredLivingFaceListResp.setSuggestion(result.getSuggestion());
detectInfraredLivingFaceListResp.setLabel(result.getLabel());
detectInfraredLivingFaceListResp.setMessageTips(result.getMessageTips());
detectInfraredLivingFaceListResps.add(detectInfraredLivingFaceListResp);
}
}
resp.setFaceListRespList(detectInfraredLivingFaceListResps);
respList.add(resp);
detectInfraredLivingFaceResps.add(resp);
}
return R.ok().setData(detectInfraredLivingFaceResps);
}
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,24 @@
package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.request.CommonReq;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
* 明星识别
*
* DetectCelebrity
*/
@Data
public class DetectCelebrityReq extends CommonReq {
}

View File

@ -0,0 +1,12 @@
package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import lombok.Data;
@Data
public class DetectInfraredLivingFaceReq extends BaseRequest {
}

View File

@ -0,0 +1,27 @@
package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectCelebrity?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*明星识别
*
* DetectCelebrity
*
*/
@Data
public class DetectCelebrityResp extends BaseResp {
/***
* 识别出的人物名称
*
* 示例值:
* 张三
*/
private List<String> names = new ArrayList<>();
}

View File

@ -0,0 +1,69 @@
package com.heyu.api.resp.face;
import lombok.Data;
import java.awt.datatransfer.FlavorEvent;
/***
*
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
*
* 红外人脸活体检测
*
* DetectInfraredLivingFace
*
*/
@Data
public class DetectInfraredLivingFaceListResp {
/***
* 检测结果的分类取值包括
*
* normal活体照片
* liveness翻拍照片
* 如果没有检测到人脸 Label 返回为 liveness
*
* 示例值:
* liveness
*/
private String label;
/***
* 结果为该分类的概率取值范围为[0.00-100.00]取值越大表示属于该分类的概率越大展开详情
*
* 示例值:
* 83.3848
*/
private Float rate;
/***
* 建议您执行的操作取值范围如下
*
* pass图片中的活体对象来自直接拍摄无需进行其余操作
* review图片中的活体对象可能为攻击样本建议您确认后再进行操作
* block图片中的活体对象大概率为攻击样本建议您执行后续操作
* 如果未检测到人脸 Suggestion 返回为 block
*
* 示例值:
* review
*
*/
private String suggestion;
/***
* 提示信息纯文字描述
*
* blurred, occluded or large angle face, please check.如输入模糊遮挡或大角度等的人脸
* no face detected, try again please.如没有检测到人脸
* 示例值:
* blurred, occluded or large angle face, please check.
*/
private String messageTips;
}

View File

@ -0,0 +1,27 @@
package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectInfraredLivingFace?tab=DOC&lang=JAVA&RegionId=cn-shanghai
*
* 红外人脸活体检测
*
* DetectInfraredLivingFace
*/
@Data
public class DetectInfraredLivingFaceResp extends BaseResp {
private Long faceNumber;
private String imageURL;
private List<DetectInfraredLivingFaceListResp> faceListRespList;
}