调用虹软 SDK 实现人脸识别登录 mes 系统

一:实现步骤:

1. 下载 SDK 集成到项目;

     去官网下载相应的SDk(https://ai.arcsoft.com.cn/product/arcface.html),项目中引入   arcsoft-sdk-face-3.0.0.0.jar,代码中指定.dll路径加载相关dll文件。

image.png

2. 人脸注册;

      在用户管理界面选中一条用户,点击人脸注册调用摄像头拍照将人脸照片信息传到后台,保存到数据库大字段,使用户信息和人脸信息关联。
      ![image.png](http://119.96.220.140:9099/upload/2020/08/image-d32e53dc.png)
      //这段代 主要是获取摄像头的视频流并显示在Video 签中
  function camera() {
    var canvas = document.getElementById("canvas"),
    context = canvas.getContext("2d"),
    video = document.getElementById("video"),
    videoObj = { "video": true },
    errBack = function (error) {
	console.log("Video capture error: ", error);
    };
//拍照按钮
$("#snap").click(function ()
{
  context.drawImage(video, 0, 0, 330, 250);
  catchCode();
})

//更新兼容火狐浏览器
if (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {
	    navigator.getUserMedia=navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
	    navigator.getUserMedia(videoObj, function (stream) {
		video.srcObject  = stream;
		video.play();
		mediaStreamTrack = stream;
		}, errBack);
}

};

function dataURItoBlob(base64Data) {
	var byteString;
	if (base64Data.split(',')[0].indexOf('base64') >= 0)
	byteString = atob(base64Data.split(',')[1]);
	else
	byteString = unescape(base64Data.split(',')[1]);
	var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
	var ia = new Uint8Array(byteString.length);
	for (var i = 0; i < byteString.length; i++) {
	ia[i] = byteString.charCodeAt(i);
	}
	return new Blob([ia], {type:mimeString});
}

//上传服务器
function catchCode()
{
	var canvans = document.getElementById("canvas");
	var selRows = $("#userGrid").grid("selRow");
	//获取浏览器页面的画布对象
	//以下开始编 数据
	var imageBase64 = canvans.toDataURL();
	var blob = dataURItoBlob(imageBase64);  // 上一步中的函数
	var fd = new FormData();
	fd.append("the_file", blob, 'image.png');
	fd.append("userId", selRows[0]);
	$.ajax({
		type:"POST",
	    url:"pmbbEmployeeController!registerFace.m",//请求后台的保存方法
	    enctype:"multipart/form-data",
	    processData: false,     // 必须
      	contentType: false,     // 必须
      	data:fd,
    	datatype: "json",
	   success:function(data){
		   $.eh.ajax.ajaxSuccess("注册成功!");
		   $("#registerFaceDialog").dialog("close");
	   }
	});
}     

3. 人脸识别登录;

 在mes系统登录页点击人脸识别,调用摄像头定时拍照将照片传到后台和用户表中人脸信息匹配,匹配相似度系数大于0.7时,若有多条大于0.7,则取系数最大的。取相应用户的账号,密码信息调用平台自动登录地址登录到系统。
![image.png](http://119.96.220.140:9099/upload/2020/08/image-dcc8b939.png)

image.png

4. 摄像头调用失败的解决办法。

配置浏览器相关设置
1. 在 chrome 中 输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure
2. 查找 Insecure origins treated as secure 属性
3. 添加你要信任的地址 例如:http://192.168.1.8:8080
4. 然后点击右下角的 重启 就 ok

5. 图像质量要求

建议待检测的图像人脸角度上、下、左、右转向小于30度;
图片中人脸尺寸不小于50 x 50像素;
图片大小小于10MB;
图像清晰; 

ARCSOFT_ARC_FACE_JAVA_DEVELOPER’S_GUIDE.pdf