c# winform实现人脸识别系统(文末附源码)

本系统开发环境为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(""
  • 11
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
"C"在计算机科学和编程中是一个非常重要的字符和符号。 首先,它是一种编程语言,即C语言。C语言是一种通用的高级编程语言,广泛用于开发计算机软件和应用程序。C语言具有简洁、高效的特点,允许程序员控制硬件和内存,并具有广泛的应用领域,包括操作系统、嵌入式系统和游戏开发等。 此外,"C"还代表了编程中的条件语句。在大多数编程语言中,条件语句用于根据给定条件执行不同的代码块。条件语句通常使用if、else和else if关键字来实现。通过使用条件语句,程序员可以根据不同的情况选择性地执行不同的代码,从而实现更灵活和智能的程序逻辑。 同时,“C”也是一种数据类型,即字符类型。在C语言中,字符类型用于表示单个字符,通常在单引号中表示。字符类型可以用于存储字母、数字、符号或特殊字符等。在编程中,我们可以使用字符类型来处理文本数据,进行比较、替换或拼接等操作。 除了以上几个重要的含义,"C"还有其他用途,比如代表"Celsius"(摄氏度)单位,用于表示温度;代表汇编语言中的"Carry"(进位标志),用于处理二进制数据的进位运算;还可以代表一些专业术语,如"Cascade"(级联)和"Closure"(闭包)等。 总之,"C"作为一个字符和符号,在计算机科学和编程中有着重要的意义,涵盖了编程语言、条件语句、字符类型以及其他一些用途。它是我们深入学习和理解计算机科学和编程的基石之一。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值