zoukankan      html  css  js  c++  java
  • 学习记录3

    人脸特征进行对比的代码实现:

    将前端传入的图像经过人像特征提取后,和库中已存在的人像信息对比分析

    /*
    人脸识别
    */
    @RequestMapping(value = "/faceSearch", method = RequestMethod.POST)
    @ResponseBody
    public Result<FaceSearchResDto> faceSearch(String file, Integer groupId) throws Exception {
    byte[] decode = Base64.decode(base64Process(file));
    BufferedImage bufImage = ImageIO.read(new ByteArrayInputStream(decode));
    ImageInfo imageInfo = ImageFactory.bufferedImage2ImageInfo(bufImage);

    //人脸特征获取
    byte[] bytes = faceEngineService.extractFaceFeature(imageInfo);
    if (bytes == null) {
    return Results.newFailedResult(ErrorCodeEnum.NO_FACE_DETECTED);
    }
    //人脸比对,获取比对结果
    List<FaceUserInfo> userFaceInfoList = faceEngineService.compareFaceFeature(bytes, groupId);

    if (CollectionUtil.isNotEmpty(userFaceInfoList)) {
    FaceUserInfo faceUserInfo = userFaceInfoList.get(0);
    FaceSearchResDto faceSearchResDto = new FaceSearchResDto();
    BeanUtil.copyProperties(faceUserInfo, faceSearchResDto);
    List<ProcessInfo> processInfoList = faceEngineService.process(imageInfo);
    if (CollectionUtil.isNotEmpty(processInfoList)) {
    //人脸检测
    List<FaceInfo> faceInfoList = faceEngineService.detectFaces(imageInfo);
    int left = faceInfoList.get(0).getRect().getLeft();
    int top = faceInfoList.get(0).getRect().getTop();
    int width = faceInfoList.get(0).getRect().getRight() - left;
    int height = faceInfoList.get(0).getRect().getBottom() - top;

    Graphics2D graphics2D = bufImage.createGraphics();
    graphics2D.setColor(Color.RED);//红色
    BasicStroke stroke = new BasicStroke(5f);
    graphics2D.setStroke(stroke);
    graphics2D.drawRect(left, top, width, height);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ImageIO.write(bufImage, "jpg", outputStream);
    byte[] bytes1 = outputStream.toByteArray();
    faceSearchResDto.setImage("data:image/jpeg;base64," + Base64Utils.encodeToString(bytes1));
    faceSearchResDto.setAge(processInfoList.get(0).getAge());
    faceSearchResDto.setGender(processInfoList.get(0).getGender().equals(1) ? "女" : "男");

    }

    return Results.newSuccessResult(faceSearchResDto);
    }
    return Results.newFailedResult(ErrorCodeEnum.FACE_DOES_NOT_MATCH);
    }

  • 相关阅读:
    Python基础__字符串拼接、格式化输出与复制
    Python基础__Python序列基本类型及其操作(1)
    Selenium 元素等待
    Selenium 键盘鼠标实践
    Selenium 元素定位
    Selenium 启动浏览器
    Selenium Webdriver概述
    linux虚拟机安装和xshell远程连接
    python实现dubbo接口的调用
    Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
  • 原文地址:https://www.cnblogs.com/fengjingfei/p/14916833.html
Copyright © 2011-2022 走看看