日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

java基于springboot的人脸识别企业排班考勤系统之人脸识别模块的设计和实现

發(fā)布時間:2024/3/26 windows 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java基于springboot的人脸识别企业排班考勤系统之人脸识别模块的设计和实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

項目里考勤打卡需要換成人臉識別,主要思路:超級管理員在員工管理處上傳員工相對清晰的五官電子一寸照片。然后員工登錄自己的賬號,在考勤頁面點擊打卡,瀏覽器開啟電腦攝像頭,采集員工臉部信息照片,并且將這個照片與員工之前的電子照進(jìn)行比對比。
演示視頻:【學(xué)生考勤系統(tǒng)單人臉采集和多人臉識別和二維碼掃描識別身份簽到考勤系統(tǒng)展示-杰凡IT】 https://www.bilibili.com/video/BV1fq4y1L77p?p=2&share_source=copy_web&vd_source=ed0f04fbb713154db5cc611225d92156

先來看看實現(xiàn)的效果吧



首先需要百度申請接口,具體這里不在贅述,百度里申請個人開發(fā),人工智能,人臉識別里新建一個應(yīng)用,可以拿到三個參數(shù), 項目只用到了兩個 API Key 和clientSecret

在調(diào)用接口之前,需要獲取AccessToke,AccessToke有效期是一個月,然后根據(jù)AccessToke去調(diào)用人臉匹配接口。

第一步:獲取AccessToke,這個百度有api文檔,里面也寫得很輕清楚了,需要API Key 和clientSecret去獲取得到,代碼如下:

public class AuthService {public static String getAuth() {// 官網(wǎng)獲取的 API Key 更新為你注冊的String clientId = " ";// 官網(wǎng)獲取的 Secret Key 更新為你注冊的String clientSecret = " ";return getAuth(clientId, clientSecret);}public static String getAuth(String ak, String sk) {// 獲取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type為固定參數(shù)+ "grant_type=client_credentials"// 2. 官網(wǎng)獲取的 API Key+ "&client_id=" + ak// 3. 官網(wǎng)獲取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打開和URL之間的連接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 獲取所有響應(yīng)頭字段Map<String, List<String>> map = connection.getHeaderFields();// 遍歷所有的響應(yīng)頭字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定義 BufferedReader輸入流來讀取URL的響應(yīng)BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回結(jié)果示例*/System.err.println("result:" + result);JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("獲取token失敗!重新獲取");e.printStackTrace(System.err);}return null;}public static void main(String[] args) {System.out.println(getAuth());}

第二部,調(diào)用照片匹配的接口并封裝,代碼如下:
參數(shù)說明img1和img2都是base64的格式,把兩張需要對比的照片穿進(jìn)去,返回值大于80說明比配成功,否則不是同一個人哦

/** * 人臉對比 */ public class FaceMatch {public static String faceMatch(String img1,String img2) {// 請求urlString url = "https://aip.baidubce.com/rest/2.0/face/v3/match";try {List pli=new ArrayList();Map<String, Object> map = new HashMap<>();map.put("image", img1);map.put("image_type", "BASE64");map.put("face_type", "LIVE");map.put("quality_control", "LOW");map.put("liveness_control", "HIGH");pli.add(map);map = new HashMap<>();map.put("image", img2);map.put("image_type", "BASE64");map.put("face_type", "LIVE");map.put("quality_control", "LOW");map.put("liveness_control", "HIGH");pli.add(map);String param = new org.json.JSONArray(pli).toString();String accessToken=AuthService.getAuth();//獲取accessToken,有效期一個月,這里需要寧外做處理,我是直接調(diào)用了String result = HttpUtil.post(url, accessToken, "application/json", param);// System.out.println(result);JSONObject jsonObject = new JSONObject(result);JSONObject obj=(JSONObject) jsonObject.get("result");return obj.get("score").toString();} catch (Exception e) {e.printStackTrace();return null;}}

第三部,寫前端頁面調(diào)用瀏覽器攝像頭,并把攝像頭采集到人臉照片以base64的方式傳給后臺,這個是我自己的jsp頁面代碼,直接復(fù)制應(yīng)該是不可以用的,但是里面html5調(diào)用攝像頭的可以參考使用哦。

注意:如果您的攝像頭打開很黑,有可能是您的電腦攝像頭壞掉了(臉都拍不清楚,肯定識別不了),這個不是代碼的問題哦,我用的360和谷歌瀏覽器測試均可打開攝像頭的。

代碼如下:

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> <!DOCTYPE html> <html dir="ltr" lang="en"><head><%@ include file="common.jsp"%> </head><body><!-- ============================================================== --><!-- Preloader - style you can find in spinners.css --><!-- ============================================================== --><div class="preloader"><div class="lds-ripple"><div class="lds-pos"></div><div class="lds-pos"></div></div></div><!-- ============================================================== --><!-- Main wrapper - style you can find in pages.scss --><!-- ============================================================== --><div id="main-wrapper" data-navbarbg="skin6" data-theme="light" data-layout="vertical" data-sidebartype="full" data-boxed-layout="full"><!-- ============================================================== --><!-- Topbar header - style you can find in pages.scss --><!-- ============================================================== --><%@ include file="leftmenu.jsp"%><!-- ============================================================== --><!-- ============================================================== --><!-- Page wrapper --><!-- ============================================================== --><div class="page-wrapper"><!-- ============================================================== --><!-- Bread crumb and right sidebar toggle --><!-- ============================================================== --><!-- ============================================================== --><!-- End Bread crumb and right sidebar toggle --><!-- ============================================================== --><!-- ============================================================== --><!-- Container fluid --><!-- ============================================================== --><div class="container-fluid"><!-- ============================================================== --><!-- Start Page Content --><!-- ============================================================== --><!-- Row --><div class="row"><div class="col-12"><div class="card"><div class="card-body"><h4 class="card-title" style="text-align: center;">上下班請記得打卡哦</h4></div><div class="container" style="text-align: center;"><span id="clockin" class="mdi mdi-cloud-print" style="font-size: 10em"></span> <video id="video" width="480" height="320" style="display:none;"> </video><p id="video_tip" style="display:none;">臉部識別中,請正臉看向攝像頭,<span id="ts"></span></p> <canvas id="canvas" width="480" height="320" style="display:none;"></canvas><p id="result"></p></div></div></div> </div><!-- Row --><!-- ============================================================== --><!-- End PAge Content --><!-- ============================================================== --><!-- ============================================================== --><!-- Right sidebar --><!-- ============================================================== --><!-- .right-sidebar --><!-- ============================================================== --><!-- End Right sidebar --><!-- ============================================================== --></div><!-- ============================================================== --><!-- End Container fluid --><!-- ============================================================== --><!-- ============================================================== --></div><!-- ============================================================== --><!-- End Page wrapper --><!-- ============================================================== --></div></body><script type="text/javascript"> var t=5; $('#clockin').click(function(){$('#clockin').hide();$('#video,#video_tip').show();var inv=setInterval(function(){$('#ts').text(t+'s');if(t<0){t=5;context.drawImage(video, 0, 0, 480, 320);$('#canvas').show(); $('#clockin,#video,#video_tip').hide();clearInterval(inv);matchface();}t--;}, 1000); }) function matchface(){$.ajax({type:"post",url:"${ctx}/clockin/faceadd",dataType:"json",data: {faceimg:getBase64()} , success:function(data){if(data.status==1){$('#result').text(data.msg).css('color','green');} else{alert(data.msg);window.location.reload();}},fail:function(data){alert('請檢查網(wǎng)絡(luò)');window.location.reload();}}) } //訪問用戶媒體設(shè)備的兼容方法 function getUserMedi1;};</script> </html>

第四部:調(diào)用后臺照片匹配接口,給前端返回結(jié)果,代碼如下:

@ResponseBody @RequestMapping("/faceadd") public Object faceadd(@RequestParam(value="pageNo",defaultValue="1")int pageNo,ScClockin o,Model model,HttpSession session,String faceimg,HttpServletRequest request) throws Exception {String isbenren=FaceMatch.faceMatch(faceimg(剛剛前端攝像頭拍攝的照片的buse64格式數(shù)據(jù)),“該員工之前的一寸電子照片的base64格式數(shù)據(jù)”);if(isbenren==null){m.put("status", "0");m.put("msg","臉部信息匹配失敗,重新簽到");return m;}double br=Double.parseDouble(isbenren);if(br<80){m.put("status", "0");m.put("msg","簽到失敗,不是本人");return m;}return m;}

總結(jié)

以上是生活随笔為你收集整理的java基于springboot的人脸识别企业排班考勤系统之人脸识别模块的设计和实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人的天堂色偷偷 | 一区二区播放 | 久久亚洲精品无码va白人极品 | 91久久久精品 | 国产精品三级电影 | 西西人体做爰大胆gogo | 亚洲青涩 | 91网国产 | 亚洲成年网 | 午夜在线免费观看视频 | 色婷婷97 | 99精品亚洲| 在线看的免费网站 | 在线观看成人小视频 | 成人四色 | 日本japanese极品少妇 | 丰满少妇高潮久久三区 | 一区av在线 | 91在线视频在线观看 | 91免费. | 国产剧情av麻豆香蕉精品 | 国产精品一二三区 | 天天干天天弄 | 亚洲人成电影在线播放 | 日操夜操天天操 | av 日韩 人妻 黑人 综合 无码 | 热久久精品免费视频 | 久久涩涩| 欧美 亚洲 另类 激情 另类 | 动漫av在线播放 | 亚洲图片欧美激情 | 亚洲国产成人va在线观看天堂 | 久久久久久久久久一区二区三区 | 欧美日韩国产精品综合 | 国产精品日韩av | 天海翼av在线 | 一本在线 | 日韩av不卡在线观看 | 后宫秀女调教(高h,np) | 日本爽爽| 亲嘴扒胸摸屁股激烈网站 | 亚洲人成无码网站久久99热国产 | 337p粉嫩大胆噜噜噜亚瑟影院 | 亚洲精品在线播放视频 | 中文字幕黄色 | 日韩一卡二卡在线 | 五月婷婷六月丁香综合 | 91亚洲精 | 黑巨茎大战欧美白妞 | 日韩免费看 | 色婷婷丁香| 18视频在线观看男男 | 公交上高潮的丁芷晴 | 国产精品第12页 | 成人做爰100 | 被各种性器调教到哭vk | 中国老熟妇自拍hd发布 | 国产-第1页-浮力影院 | 国模私拍视频在线 | 永久av网站| 久伊人| 亚洲一级影片 | 黄色一级网 | 国产一区2区| 久久无吗视频 | 国产三级成人 | 欧美精品三区 | 日本国产一区二区三区 | 777奇米视频 | 精国产人伦一区二区三区 | 九色porn蝌蚪 | 精品乱子伦一区二区三区 | 四虎在线播放 | 婷婷中文字幕在线 | 神秘马戏团在线观看免费高清中文 | 毛片综合 | 女性裸体不遮胸图片 | 日本三级欧美三级 | 午夜在线免费观看视频 | 在线免费观看的av | av在线资源网 | 亚洲一区二区激情 | 亚洲精品久久久久久久久久久久久 | 国产成人无码精品久久久性色 | 无码h肉动漫在线观看 | 2021av视频 | 国产真实在线 | 欧美高清69hd| 亚洲av电影一区 | 在线看www| 日韩av电影手机在线观看 | 中文字幕一区二区人妻 | 欧美成人vr18sexvr | 老公吃小头头视频免费观看 | 欧美性吧 | 美女视频黄色免费 | 日韩中文字幕精品视频 | 田中瞳av | 2019国产在线|