栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

百度人脸检测SpringBoot自动装配

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

百度人脸检测SpringBoot自动装配

1. SpringBoot自动装配的原理:(自定义Springboot启动器)
  • SpringBoot启动的时候通过**@EnableAutoConfiguration**注解找到META-INF/spring.factories配置文件中所有的自动配置类,并对其进行加载,

  • TanhuaAutoConfiguration它实际上就是一个javaConfig形式的Spring容器配置类,它们都有一个**@EnableConfigurationPerperties**的注解,通过这个注解启动XXXProperties命名的类去加载全局配置中的属性,如server.port,而XXXProperties通过@ConfigurationProperties注解将全局配置文件中的配置与当前类的属性进行绑定,从而实现自动装配

    1 在app-server中调用自动配置类,这个类的配置文件就需要 配置 系统需要的属性

    2 在auto-config项目中,抽离公共的环境配置
    3 通过@ConfigurationProperties读取公共的环境配置
    4 编写xxTemplate,实现短信发送业务
    5 在spring.factories中通过@EnableAutoConfiguration自动加载模板类

    2. 注册百度云 3. 找到人脸识别

4. 领取免费资源

5 创建新应用


6. 将创建好的秘钥信息写入yaml文件


7.导入pom 文件
      
        
            com.baidu.aip
            java-sdk
            4.8.0
        
8. 书写BaiduProperties
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix="baidu.api")
@Data
public class BaiduProperties {
    private String appId;
    private String apiKey;
    private String secretKey;
}
9. 书写BaiDuYunTemplate
import com.baidu.aip.face.AipFace;
import com.tanhua.autoconfig.properties.BaiduProperties;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaiDuYunTemplate {
    @Autowired
    private BaiduProperties baiduProperties;

    public BaiDuYunTemplate(BaiduProperties baiduProperties) {
        this.baiduProperties = baiduProperties;
    }
   public boolean detect(String imgURL){
       HashMap options = new HashMap();
       options.put("face_field", "age");
       options.put("max_face_num", "2");
       options.put("face_type", "LIVE");
       options.put("liveness_control", "LOW");
       // 初始化一个AipFace
       AipFace client = new AipFace(baiduProperties.getAppId(), baiduProperties.getApiKey(), baiduProperties.getSecretKey());
       System.out.println(client);
       // 可选:设置网络连接参数
       client.setConnectionTimeoutInMillis(2000);
       client.setSocketTimeoutInMillis(60000);

       // 可选:设置代理服务器地址, http和socket二选一,或者均不设置
//        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
//        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理
       System.out.println("imgURL="+imgURL);
       // 调用接口
       String image = imgURL;
       String imageType = "BASE64";

       // 人脸检测
       JSONObject res = client.detect(image, imageType, options);
       System.out.println(res.toString(2));
       Integer error_code = Integer.valueOf(res.get("error_code").toString());
       return error_code==0;
   }
}
10. 书写BaiduAutoConfiguration
import com.tanhua.autoconfig.properties.BaiduProperties;
import com.tanhua.autoconfig.template.BaiDuYunTemplate;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;

@EnableConfigurationProperties({
        BaiduProperties.class
})
public class BaiduAutoConfiguration {
    @Bean
   public BaiDuYunTemplate baiDuYunTemplate(BaiduProperties baiduProperties){return  new BaiDuYunTemplate(baiduProperties);}
}
11. 人脸识别应用
@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    BaiDuYunTemplate baiDuYunTemplate;
    @Resource
    HttpServletRequest httpServletRequest ;
   @DubboReference
    private UserApi userapi;
   @DubboReference
   private UserInfoApi userInfoapi;


     @PostMapping("/loginReginfo/head")
    public ResponseEntity loginHeader( MultipartFile headPhoto){
                 try {
                     InputStream is = headPhoto.getInputStream();
                     String path = ossTemplate.uploadToOSS(headPhoto, "face/");
                     boolean detect = baiDuYunTemplate.detect(path);
                     if (detect==false){
                         throw  new RuntimeException("人脸检测失败!!");
                     }
                     return ResponseEntity.ok(null);
                 } catch (Exception e) {
                     System.out.println(e.getMessage());
                 }

       return ResponseEntity.ok(null);
     }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号