热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)

本文主要介绍关于百度AI,H5调用摄像头人脸检测,人脸注册,人脸搜索,Java网页调用摄像头的知识点,对【基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)】和【JAVA转AI有

本文主要介绍关于百度AI,H5调用摄像头人脸检测,人脸注册,人脸搜索,Java网页调用摄像头的知识点,对【基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)】和【JAVA转AI有何捷径】有兴趣的朋友可以看下由【小帅丶】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【人工智能,人脸识别】相关技术问题。

JAVA转AI有何捷径

?

人脸注册、人脸搜索使用百度AI接口。不支持H5活体检测(需要活体检测请参考百度AI-H5活体检测) 体验地址(人脸注册) https://www.kundadahh.club/face/storage体验地址(人脸搜索) https://www.kundadahh.club/face只是为了演示。所以是IP。最好用火狐浏览器访问。谷歌提示异常作者就不专门修改了。大家可以直接下载源码运行体验的
前期准备工作

1.http://ai.ai/ 注册账户 实名认证 创建人脸应用 保存APPID、APIKEY、SECRETKEY 三个值备用

2.需要必须的Java经验(最好是会用SpringBootMaven)

3.https://trackingjs.com/ 了解一下trackingjs(进行视频中的人脸检测。更多功能自行阅读文档)

4.项目源码地址:https://gitee.com/xshuai/faceRecognition

简易流程图

示例图(先看下效果) 用户名为空提示

百度AI人脸注册需要userid groupid 演示功能 直接写固定的值 userid是UUID生成的一个字符串。大家根据实际情况更改即可

图片不包含人脸

确保图片中包含人脸即可。未做活体检测。活体检测请参考百度AI官方文档的H5活体检测

人脸注册成功

人脸搜索

trackingjs提供人脸检测功能。需要完整面部 缺少下颚也是不行的。搜索是使用百度AI接口。成功搜索返回注册给的用户名称

无需用户主动拍照。只要摄像头中包含完整面部即可。同样也不支持活体检测

搭建SpringBoot项目

项目地址 https://gitee.com/xshuai/faceRecognition

pom配置相关库

百度SDK、fastjson、thymeleaf必不可少


   
   
    4.0.0
    
   
    cn.xsshome
    
   
    faceRecognition
    
   
    jar
    
   
    faceRecognition
    
   
    http://maven.apache.org
    
    
    
     org.springframework.boot
     
    
     spring-boot-starter-parent
     
    
     2.0.4.RELEASE
     
     
     
    
    
    
     UTF-8
     
    
     2.7.0
     
    
    
     
     
     
      com.alibaba
      
     
      fastjson
      
     
      1.2.35
      
     
     
     
      org.springframework
      
     
      springloaded
      
     
      1.2.6.RELEASE
      
     
     
     
      org.springframework.boot
      
     
      spring-boot-devtools
      
     
     
     
     
      org.springframework.boot
      
     
      spring-boot-starter
      
     
     
     
     
      org.springframework.boot
      
     
      spring-boot-starter-web
      
     
     
     
      org.springframework.boot
      
     
      spring-boot-starter-actuator
      
     
     
     
     
      org.springframework.boot
      
     
      spring-boot-starter-thymeleaf
      
     
     
     
     
      log4j
      
     
      log4j
      
     
      1.2.17
      
     
     
     
     
      com.baidu.aip
      
     
      java-sdk
      
     
      4.10.0
      
     
    
    
    
     
      
      
       org.springframework.boot
       
      
       spring-boot-maven-plugin
       
       
       
        true
        
       
      
     
    
  
application.yml配置
server:
  port: 8888
#只简单配置了项目启动端口
FaceManagerController(人脸注册、搜索)
package cn.xsshome.controller;

import java.util.HashMap;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baidu.aip.face.AipFace;

import cn.xsshome.common.FactoryUtil;
import cn.xsshome.vo.FacePageBean;
import cn.xsshome.vo.FacePageResponse;
import cn.xsshome.vo.response.FaceSerachResponse;
/**
 * 人脸照片注册方法
 * @author 小帅丶
 *
 */
@Controller
@RequestMapping("/facemanager")
public class FaceManagerController {
	//人脸模块对象
	AipFace aipFace = FactoryUtil.getAipFace();
	private static Logger log = LoggerFactory.getLogger(FaceManagerController.class);
	/**
	 * 人脸注册
	 * @param facePageBean 请求的参数对象
	 * @param request  
	 * @param response
	 * @return
	 */
	@PostMapping("/add")
	@ResponseBody
	public String addFace(FacePageBean facePageBean,HttpServletRequest request, HttpServletResponse response){
		log.info("发送过来的参数{}",JSONObject.toJSONString(facePageBean));
		FacePageResponse facePageRespOnse= new FacePageResponse();
		if(facePageBean.getUser_info().equals("")||null==facePageBean.getUser_info()){
			facePageResponse.setError_code("100");
			facePageResponse.setError_msg("用户名称为空 请填写后重试");
			return JSON.toJSONString(facePageResponse);
		}else{
			String groupId = "xsdemo";//记得替换成自己的或通过页面传递用户组id(由数字、字母、下划线组成),长度限制128B
			String userId = UUID.randomUUID().toString().replace("-", "").toUpperCase();//用户id(由数字、字母、下划线组成),长度限制128B
			HashMap
  
    optiOns= new HashMap
   
    (); options.put("user_info","小帅丶"); org.json.JSONObject resultObject = aipFace.addUser(facePageBean.getImgdata(), "BASE64", groupId, userId, options); log.info("注册返回的数据{}",resultObject.toString(2)); return resultObject.toString(); } } /** * 人脸搜索 * @param facePageBean 请求的参数对象 * @param request * @param response * @return */ @PostMapping("/search") @ResponseBody public FacePageResponse searchFace(FacePageBean facePageBean,HttpServletRequest request, HttpServletResponse response){ FacePageResponse facePageRespOnse= new FacePageResponse(); log.info("发送过来的参数{}",JSONObject.toJSONString(facePageBean)); String groupIdList = "xsdemo";//用户组id(由数字、字母、下划线组成),长度限制128B org.json.JSONObject resultObject = aipFace.search(facePageBean.getImgdata(), "BASE64", groupIdList, null); //使用fastjson处理返回的内容 直接用javabean接收 方便取值 FaceSerachResponse faceSerachRespOnse= JSON.parseObject(resultObject.toString(), FaceSerachResponse.class); if("0".equals(faceSerachResponse.getError_code())&&"SUCCESS".equals(faceSerachResponse.getError_msg())){ if(faceSerachResponse.getResult().getUser_list().get(0).getScore()>80f){ facePageResponse.setError_code(faceSerachResponse.getError_code()); facePageResponse.setError_msg(faceSerachResponse.getError_msg()); facePageResponse.setUser_info(faceSerachResponse.getResult().getUser_list().get(0).getUser_info()); }else{ facePageResponse.setError_code("555"); facePageResponse.setError_msg("人脸搜索失败,请重试或请先注册"); } }else{ facePageResponse.setError_code("500"); facePageResponse.setError_msg(faceSerachResponse.getError_msg()); } log.info("搜索返回的数据{}",resultObject.toString(2)); return facePageResponse; } } 
   
  
页面代码 人脸注册页面




  

  

  






	
  

人脸注册

人脸搜索页面

trackerTask.stop();为防止人脸搜索接口调用中 多次提交问题。




  
  
  
  
  
  
  
  
  
  
  
  
  


	
  

请确保面部完整,未检测到请靠近摄像头

?

本文《基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)》版权归小帅丶所有,引用基于百度AI使用H5实现调用摄像头进行人脸注册、人脸搜索功能(Java)需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
author-avatar
游必有方RK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有