作者:游必有方RK | 来源:互联网 | 2023-08-26 13:12
本文主要介绍关于百度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经验(最好是会用SpringBoot、Maven)
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版权协议。