赞
踩
本系统开发环境为Visual Studio 2010,使用.net 4.0开发,使用AForge库和Aipsdk库和Newtonsoft.json库和system.sqlite库以及第三方插件DevExpress完成。
本系统特点:分为人脸库的录入,将信息保存在sqlite数据库中,该数据库中使用一张表,字段有用户姓名,性别,工号,人脸图片(图像存入数据库中可以点击此链接查看)。
数据库字段
本系统功能介绍:
打卡系统界面
首先构造出的是本界面,首先说下个人信息栏,上方的人脸录入和打卡是一个功能只要是调用本机摄像头,找到一张合适的角度拍下此张图片,当界面运行时:界面隐藏了“确定打卡”和“登记按钮”,因为不确定的是当前是打卡还是录入信息。
界面运行时
如果选择打卡,该打卡功能只要是调用摄像头,此时界面变成
打卡界面
如果点击确认打卡,循环读取数据库人脸信息,当相似度大于90的时候跳出循环,读取该条信息显示在界面上,打卡状态为成功。如果没有大于90的就返回重新打卡(不方便人脸不截图)。
打卡成功
下面我将说下信息录入功能,当点击信息录入时打卡按钮变成人脸录入,个人信息文本框变成可用,此时可以输入此人的信息,信息输入完毕,打开人脸录入,最后点击登记功能。
录入信息
登记完成,信息读入数据库:
数据库
此时整个功能就实现了。
下面讲一下具体功能实现,人脸识别当然不是自己写的,调用的是百度AI开放平台的SDK,
百度AI
然后需要创建一个应用列表,需要使用到的是API Key和Secret Key
应用列表
调用代码
然后调用摄像头方面代码。首先是获取摄像头代码
摄像头
FaceCommon是我自己写的一个类,获取已插USB摄像头硬件id
FaceCommon
最后最核心的还是人脸对比
人脸对比
核心代码到此结束文末附源码,喜欢的话给个赞和打赏,不理解的地方,欢迎各位留言或加qq
FaceCommon代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AForge.Video.DirectShow;
namespace RenLianShiBie
{
public class FaceCommon { #region 方法 /// <summary> /// 获取已插USB摄像头硬件Id /// </summary> /// <returns></returns> public static List<string> GetCameraDeviceId() { List<string> _cameraList = new List<string>(); FilterInfoCollection _filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);//获取所有已插USB摄像头驱动信息 if (_filterInfoCollection != null && _filterInfoCollection.Count > 0) { for (int i = 0; i < _filterInfoCollection.Count; i++) { _cameraList.Add(_filterInfoCollection[i].MonikerString); //向集合中添加USB摄像头硬件Id } _cameraList.Remove(""
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。