百度开放平台有很多新鲜的玩法,有人脸识别,文字识别,图像识别,,,各种各样的接口,忍不住注册了一个玩玩。

注册一个百度开发者账号,然后就可以‘折腾’了~

拿人脸识别作为例子,可以先注册个人脸识别程序体验一把……

我们点击“创建应用”,就可以创建一个人脸识别的应用。

随后会出来几串数字和英文字母。千万保存好它,稍后会用到。

在然后,我们就需要查看文档,每个语言都有对应的文档描述,使用方法和sdk下载,非常全面,如图:

不用我去介绍了,下面是咱使用javaweb最简单的jsp-servlet弄出来的一个人脸识别登陆的小程序。

页面和servlet:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>人脸识别登陆</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" type="text/css" href="plugin/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="plugin/css/font-awesome.min.css">
    <style>
        .hint{
            color:red;
        }
    </style></head><body>
<div class="container">
    <h3>欢迎使用人脸识别签到系统</h3>
    <video width="400" height="300"></video>
    <!-- 图像画布 -->
    <canvas width="200" height="150"></canvas>
    <button id="upload" οnclick="DT_register()" class="btn btn-info"><i class="icon-play"></i>&nbsp;登录</button>
    <!-- <button id="snap" class="btn btn-success"><i class="icon-camera"></i>&nbsp;拍个照pian</button> -->
    <a href="jsp/DT/DT_register.jsp" class="btn btn-success"><i class="icon-user"></i>&nbsp;注册新用户</a>
    <a href="servlet/DTAdmin" class="btn btn-warning"><i class="icon-edit"></i>&nbsp;管理人脸库信息</a>
    <button οnclick="window.history.back(-1)" class="button button-glow button-border button-rounded button-royal"><i class="icon-reply"></i>&nbsp;返回</button><br/>
    <span class="hint">1.请将面部置于识别区域主体,单击拍照签到<br/>2.每次有且仅能有一个用户使用人脸登录<br/>3.单击登录后请稍候一些时间,程序会将结果返回出来</span>
</div>
<script>function $(elem){return document.querySelector(elem);}//获取元素var canvas = $('canvas'),context = canvas.getContext('2d'),video = $('video'),snap = $('#snap'),close = $('#close'),upload = $('#upload'),uploaded = $('#uploaded'),mediaStreamTrack;//打开摄像头if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {navigator.mediaDevices.getUserMedia({video: true,}).then(function(stream) {mediaStreamTrack = typeof stream.stop === 'function' ? stream : stream.getTracks()[1];video.src = (window.URL || window.webkitURL).createObjectURL(stream);video.play();});}else if (navigator.getMedia) {navigator.getMedia({video: true}, function(stream) {mediaStreamTrack = stream.getTracks()[0];video.src = (window.URL || window.webkitURL).createObjectURL(stream);video.play();});}//人脸注册部分function DT_register(){
        //画出图像
        context.drawImage(video, 0, 0, 200, 150);
        //开始通过jQuery传输图片        jQuery.post('servlet/DTLogin', {                  //指定发送图片到的servlet       snapData: canvas.toDataURL('image/jpg')       //原来这个小括号里是image/png    }).done(function(rs) {//对结果集进行解析,判断是否存在人脸    if(rs == "noface"){     alert("没有人脸信息或人脸数量非1,请重新拍照!");  }else if(rs == "nouser"){       alert("人脸库中没有您的注册记录!请先注册!");    }else if(rs == "picture"){      alert("请使用真实的人脸信息进行登录!不得伪造!");  }else{      alert("成功登录!即将跳转");        //路径跳转时,本机测试需要详细路径jsp/DT/部署则不需要,直接写文件名,这点尤为注意      window.location.href = "jsp/DT/DT_user.jsp"; }       });}// 截取图像
//  snap.addEventListener('click', function() {}, false);// 关闭摄像头
/*   close.addEventListener('click', function() {mediaStreamTrack && mediaStreamTrack.stop();}, false); */
</script>
<script type="text/javascript" src="plugin/js/bootstrap.min.js"></script>
<script type="text/javascript" src="plugin/js/jquery-3.1.1.min.js"></script></body>
</html>
package com.baiduAI.servlet;
//servlet
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.HashMap;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import org.json.JSONObject;
import com.baidu.aip.face.AipFace;
import com.baiduAI.aip.AIP;
import com.baiduAI.dao.UserDao;
import com.baiduAI.daoImpl.UserDaoImpl;
import com.baiduAI.model.User;
import com.baiduAI.tool.ChangeEncode;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;public LoginServlet() {super();}public void destroy() {super.destroy(); }public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}
/*** 用户登录处理servlet*     获取页面*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//转码request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//获取页面请求参数String username = URLDecoder.decode(request.getParameter("username"),"utf-8");String img =request.getParameter("snapData");String data = img.substring(22, img.length());  //图片去base64头System.out.println("用户名:" + username);AipFace client = new AipFace(AIP.APP_ID,AIP.API_KEY,AIP.SECRET_KEY);       //创建连接对象HashMap<String,String> options = new HashMap<String,String>(); //请求的预制参数,这里我们就选取默认吧【不放置任何参数】byte[] by = ChangeEncode.base64ToByte(data);   //将base64转换成二进制数组【需要借助jar包】JSONObject res = client.detect(by, options);    //生成结果集并用JSON保存int sum = res.getInt("result_num");if(sum != 0){System.out.println("可以进行下一步操作!");//开始执行查找比对方法UserDao ud = new UserDaoImpl();User sel_user = ud.login(username);   //执行查询对应用户的人脸图片//如果所查询用户存在if(sel_user.getUsername() != null){byte[] by2 = ChangeEncode.base64ToByte(sel_user.getPic1());  //将查询结果进行转换System.out.println("该用户图片返回结果:" + sel_user.getPic1());byte[][] by_all = new byte[2][];by_all[0] = by;by_all[1] = by2;//byte[下标][图片数组]JSONObject respon = client.match(by_all, options);System.out.println("返回数量:"+respon.get("result_num"));System.out.println("ID:"+respon.get("log_id"));JSONArray ja = respon.getJSONArray("result");    //评分结果集int score = 0;for(int i = 0;i < ja.length();i ++){
//                  System.out.println("比对图片1索引"+ja.getJSONObject(i).getInt("index_i"));
//                  System.out.println("比对图片2索引"+ja.getJSONObject(i).getInt("index_j"));//官方文档说比对分数大于80既是同一个人System.out.println("AI比对相似度:"+ja.getJSONObject(i).getDouble("score"));score = (int)ja.getJSONObject(i).getDouble("score");if(score > 80){//是当前用户,提示成功并存入sessionrequest.getSession().setAttribute("user", sel_user);    //存入用户对象到sessionSystem.out.println("登录成功!欢迎您:" + sel_user.getUsername());out.print("success");}else{System.out.println("登录失败,您头像与人脸库用户头像不符!");out.print("errorface");}}}else{System.out.println("用户不存在!无法继续登录");out.print("nouser");}}else{System.out.println("照片中不存在人脸,请重新拍照!");out.print("error");}}public void init() throws ServletException {}
}

静态连接参数:

package com.baiduAI.aip;
public class AIP {    public static final String APP_ID = "";public static final String API_KEY = "";public static final String SECRET_KEY = "你的";
}

编码转换:

package com.baiduAI.tool;import org.apache.commons.codec.binary.Base64;/*** 更改编码类*/
public class ChangeEncode {//base64转bytepublic static byte[] base64ToByte(String base64str){//这需要引入jar包Commons-codec-1.5.jarreturn Base64.decodeBase64(base64str);}//byte转base64public static String byteToBase64(byte[] b){return Base64.encodeBase64String(b);}
}

戳下面~

百度人脸识别文档中心

当然能整合一下,本人写的很乱,整合各个工具类后,层次更清晰~咱算是个‘反面教材’了吧。

小伙伴有什么更好的建议,欢迎下面评论。

基于javaweb调用百度接口实现人脸识别登陆功能相关推荐

  1. 调用百度接口实现人脸识别

    首先去百度ai开通人脸对比接口应用才有接下来的故事 地址:https://ai.baidu.com/tech/face/compare 1.导入人脸对比SDK,我使用maven自动下载,不嫌麻烦可以下 ...

  2. vpa函数python_python 调用百度接口 做人脸识别

    操作步骤差不多,记得要在百度AIPI中的控制台中创建对应的工单 创建工单成功后 会生成两个key  这个两个key是要生成tokn 用 这里大家可以用 def函数 将token返回 供下面的接口使用 ...

  3. python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...

  4. 英雄联盟台词语音包数据挖掘(基于python调用百度接口对台词进行语音识别)

    背景 寒假的时候,由于up非常喜欢剪辑英雄联盟视频,但是在剪辑的时候会遇到没有英雄台词原声的问题,所以就去各大网站上找,但是遇到的问题是要么就是英雄台词不全,要么就是其他皮肤的原声没有.后来在某多商城 ...

  5. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  6. C#窗口调用百度云实现人脸识别。(注意代码中添加的控件以及部分传值给函数,亲测百分百可用。)

    调用的dll库文件 代码模块 首先是连接开启电脑摄像头,拍照后保存照片到本地. 然后是调用百度云: 1.获取百度云access_token与百度云连接: 2.建立控制太应用:人脸识别: 3.人脸库的人 ...

  7. python调用百度接口实现ocr识别_Python 3调用百度OCR API实现剪贴板文字识别

    本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字. #!python3 import urllib.request, urllib.parse i ...

  8. C#:调用百度接口实现文字识别(准备做一个截图文字识别软件)

    近期在做毕业设计,发现查看论文的时间太多了,然而百度文库或是PDF的文档要想复制真是费劲至极,于是准备做一个个人使用的截图文字识别软件,可以提高工作效率.那下面就做个简单介绍. 第一步:获取到你的AP ...

  9. 安卓Android基于百度云平台人脸识别学生考勤签到系统设计

    开发软件:Idea + Mysql + AndroidStudio + 雷电模拟器 基于安卓开发一个人脸识别签到系统,服务器采用springboot框架开发,管理员登录后可以添加和维护人脸信息,添加的 ...

最新文章

  1. Mysql 中获取刚插入的自增长id的值
  2. (持续更新)webstorm快捷键及术语翻译
  3. 删除mysql主键语句_MySQL主键添加/删除
  4. 安卓手机上微信无法打开Https网址的完美解决方案
  5. IE6 Hotfix MS-042将导致其Crash!
  6. 网络编程----观察进程的启动与停止
  7. 【Android】OKHTTP使用
  8. php之sprintf的用法,PHP之sprintf函数用法详解
  9. java计算机毕业设计ssm+vue工商学院办公用品管理信息系统
  10. 高通9008端口刷linux,高通命令进入9008端口方式汇总
  11. Math类的常用函数总结
  12. facebook轮播视频_如何设置Facebook Messenger Messenger视频通话
  13. ybc_xxx类模块应用1-ybc_speech(第一片)
  14. 挑战华为社招:不止面试题,笔记源码统统都有,最强技术实现
  15. win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决
  16. goland debug高级技巧
  17. 记一次360众测仿真实战靶场考核WP
  18. 从最简单的ROE和PB的角度去选股
  19. linux开组态软件,基于嵌入式Linux的组态软件实时数据库的设计
  20. 2012-04-30《说说老朋友》

热门文章

  1. Mysql中SQL语句的强化使用
  2. 用STM32F401和nRF24L01制作无线调速小车
  3. 【语音处理】用Matlab实现语音变速变调
  4. 【Linux】文件系统的概念和类型
  5. ctrl +R 类unix 搜索神器
  6. ELK本地(win10)搭建
  7. 乐视mysql面试题
  8. 计算机里的水平居中在哪里,电脑居中在哪里啊
  9. Input path does not exist
  10. 【环绕星球】绿色地球win7主题