基于以下开源软件做了一个Demo

GitHub - ViewFaceCore/ViewFaceCore: C# 超简单的离线人脸识别库。( 基于 SeetaFace6 )

效果

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ViewFaceCore.Core;
using ViewFaceCore.Model;
using System.Drawing;
using System.Diagnostics;namespace ViewFaceCoreDemo
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";private void btnSelect_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox1.ImageLocation = ofd.FileName;}private void button5_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;pictureBox2.ImageLocation = ofd.FileName;}/// <summary>/// 人脸检测/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceDetector faceDetector = new FaceDetector();Bitmap bitmap = new Bitmap(pictureBox1.Image);FaceImage faceImage = bitmap.ToFaceImage();FaceInfo[] infos = faceDetector.Detect(faceImage);if (infos.Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}//Console.WriteLine("识别到的人脸数量:" + infos.Length + " 个人脸信息:\n");//Console.WriteLine("No.\t人脸置信度\t位置信息");//for (int i = 0; i < infos.Length; i++)//{//    Console.WriteLine(String.Format("{0}\t{1}\t{2}", i, infos[i].Score, infos[i].Location));//}//画方框,标记人脸using (Graphics g = Graphics.FromImage(bitmap)){g.DrawRectangles(new Pen(Color.Red, 2), infos.Select(p => new RectangleF(p.Location.X, p.Location.Y, p.Location.Width, p.Location.Height)).ToArray());}pictureBox1.Image = bitmap;}/// <summary>/// 活体检测/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceImage bitmap = new Bitmap(pictureBox1.Image).ToFaceImage();FaceDetector faceDetector = new FaceDetector();FaceLandmarker faceMark = new FaceLandmarker();FaceAntiSpoofing faceAntiSpoofing = new FaceAntiSpoofing();if (faceDetector.Detect(bitmap).Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}var info = faceDetector.Detect(bitmap).First();var markPoints = faceMark.Mark(bitmap, info);Stopwatch sw = Stopwatch.StartNew();sw.Start();var result = faceAntiSpoofing.AntiSpoofing(bitmap, info, markPoints);msg = "活体检测,结果:" + result.Status + ",清晰度:" + result.Clarity + ",真实度:" + result.Reality + ",耗时:" + sw.ElapsedMilliseconds + "ms";richTextBox1.Text += msg + "\r\n";Console.WriteLine(msg);sw.Stop();}/// <summary>/// 人脸比对/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button4_Click(object sender, EventArgs e){String msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}if (pictureBox2.Image == null){msg = "图片2不能为空";richTextBox1.Text += msg + "\r\n";return;}Stopwatch sw = Stopwatch.StartNew();sw.Start();var faceImage0 = new Bitmap(pictureBox1.Image).ToFaceImage();var faceImage1 = new Bitmap(pictureBox2.Image).ToFaceImage();//检测人脸信息FaceDetector faceDetector = new FaceDetector();FaceInfo[] infos0 = faceDetector.Detect(faceImage0);FaceInfo[] infos1 = faceDetector.Detect(faceImage1);if (infos0.Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";sw.Stop();return;}if (infos1.Length == 0){msg = "图片2未检测到人脸";richTextBox1.Text += msg + "\r\n";sw.Stop();return;}//标记人脸位置FaceLandmarker faceMark = new FaceLandmarker();FaceMarkPoint[] points0 = faceMark.Mark(faceImage0, infos0[0]);FaceMarkPoint[] points1 = faceMark.Mark(faceImage1, infos1[0]);//提取特征值FaceRecognizer faceRecognizer = new FaceRecognizer();float[] data0 = faceRecognizer.Extract(faceImage0, points0);float[] data1 = faceRecognizer.Extract(faceImage1, points1);//对比特征值bool isSelf = faceRecognizer.IsSelf(data0, data1);//计算相似度float similarity = faceRecognizer.Compare(data0, data1);msg = "识别到的人脸是否为同一人:" + isSelf + ",相似度:" + similarity + ",对比耗时:" + sw.ElapsedMilliseconds + "ms";richTextBox1.Text += msg + "\r\n";Console.WriteLine(msg);sw.Stop();}/// <summary>/// 口罩检测/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceImage bitmap = new Bitmap(pictureBox1.Image).ToFaceImage();FaceDetector faceDetector = new FaceDetector();MaskDetector maskDetector = new MaskDetector();if (faceDetector.Detect(bitmap).Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}var info = faceDetector.Detect(bitmap).First();PlotMaskResult plotMaskResult = maskDetector.PlotMask(bitmap, info);if (plotMaskResult.Masked){richTextBox1.Text += "口罩:是 \r\n";}else{richTextBox1.Text += "口罩:否 \r\n";}Console.WriteLine(msg);}/// <summary>/// 年龄预测/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button6_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceImage bitmap = new Bitmap(pictureBox1.Image).ToFaceImage();FaceDetector faceDetector = new FaceDetector();if (faceDetector.Detect(bitmap).Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}var info = faceDetector.Detect(bitmap).First();AgePredictor agePredictor = new AgePredictor();FaceLandmarker faceMark = new FaceLandmarker();var markPoints = faceMark.Mark(bitmap, info);int age = agePredictor.PredictAge(bitmap, markPoints);richTextBox1.Text += "年龄:" + age + " \r\n";Console.WriteLine(msg);}/// <summary>/// 性别预测/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button7_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceImage bitmap = new Bitmap(pictureBox1.Image).ToFaceImage();FaceDetector faceDetector = new FaceDetector();if (faceDetector.Detect(bitmap).Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}var info = faceDetector.Detect(bitmap).First();GenderPredictor genderPredictor = new GenderPredictor();FaceLandmarker faceMark = new FaceLandmarker();var markPoints = faceMark.Mark(bitmap, info);Gender gender = genderPredictor.PredictGender(bitmap, markPoints);richTextBox1.Text += "性别:" + gender + " \r\n";Console.WriteLine(msg);}/// <summary>/// 眼睛状态/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button8_Click(object sender, EventArgs e){string msg = "";if (pictureBox1.Image == null){msg = "图片1不能为空";richTextBox1.Text += msg + "\r\n";return;}FaceImage bitmap = new Bitmap(pictureBox1.Image).ToFaceImage();FaceDetector faceDetector = new FaceDetector();if (faceDetector.Detect(bitmap).Length == 0){msg = "图片1未检测到人脸";richTextBox1.Text += msg + "\r\n";return;}var info = faceDetector.Detect(bitmap).First();EyeStateDetector eyeStateDetector = new EyeStateDetector();FaceLandmarker faceMark = new FaceLandmarker();var markPoints = faceMark.Mark(bitmap, info);EyeStateResult eyeStateResult = eyeStateDetector.Detect(bitmap, markPoints);richTextBox1.Text += "眼睛状态:" + eyeStateResult + " \r\n";Console.WriteLine(msg);}}
}

Demo下载

C# 人脸检测 人脸比对 活体检测 口罩检测 年龄预测 性别预测 眼睛状态检测相关推荐

  1. 【CV】使用 OpenCV 进行图像中的性别预测和年龄检测

    一.介绍 照片中的面部分析引起了人们的广泛关注,因为它可以帮助我们解决各种问题,包括更好的客户广告定位.更好的内容推荐系统.安全监控和其他领域. 年龄和性别是面部特征的重要方面,确定它们是此类活动的先 ...

  2. 用 OpenCV 进行年龄和性别检测

    在本文中,我将带您完成用 Python 进行机器学习的年龄和性别检测的任务.年龄和性别检测属于计算机视觉的范畴,因此我将在Python中使用OpenCV库. 在开始使用Python进行年龄和性别检测任 ...

  3. 使用 Python 进行年龄和性别检测,这个结果搞笑了

    在本文中,我将使用 Python 编程语言带您完成使用机器学习进行年龄和性别检测的任务.年龄和性别检测是计算机视觉的任务,因此我将使用 Python 中的 OpenCV 库. 在开始使用 Python ...

  4. kingscada检测服务器状态,基于云服务器的状态检测平台

    技术领域 本发明涉及云服务器领域,尤其涉及一种基于云服务器的状态检测平台. 背景技术 云服务器(Elastic Compute Service,ECS)是一种简单高效.安全可靠.处理能力可弹性伸缩的计 ...

  5. [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

    人脸应用在计算机视觉体系中占很大一块,在深度学习火起来之前,基于传统机器学习的人脸应用就已经很成熟了,有很多商用应用场景.本文用一个可以实际运行的Demo来说明人脸应用中常见的技术概念,包含'人脸检测 ...

  6. 基于Android 虹软人脸、人证对比,活体检测

    2019独角兽企业重金招聘Python工程师标准>>> 最近虹软新增了人证识别.活体检测的功能,好像之前的人脸识别也更新过版本,之前一篇文章用虹软Android SDK做人脸识 别, ...

  7. 静默活体检测-人脸活体识别

    活体检测技术一般分为配合式活体检测和非配合式活体检测. 配合式活体检测是最常见的活体检测方式,通过眨眼.张嘴.摇头.点头.甚至读出随机数字等配合式组合动作,使用人脸关键点定位和人脸追踪等技术,验证用户 ...

  8. php活体检测,人脸门禁系统中活体检测的必要性

    人脸识别技术日趋成熟,商业化应用愈加广泛.为防止恶意者伪造或窃取他人的人脸特征用于身份认证,人脸识别系统需具备活体检测功能,以判断提交的人脸特征是否来自有生命的真实个体. 人脸识别技术日趋成熟,商业化 ...

  9. 人脸识别系统中的活体检测技术有哪些分类

    人脸识别系统在实际应用中会面对照片.视频.面具等道具攻击,为了这防止这些欺诈手段,在系统中应用到活体检测,检测识别的人员是否为活体,提高应用的安全性.由畅视智能与你分享应用到人脸识别系统中的活体检测技 ...

最新文章

  1. Linux修改文件权限为777
  2. python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用
  3. 退出python命令行-退出python命令
  4. 大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流
  5. C#时间格式转换、日期操作函数、常用转换语法
  6. HAProxy 2.0发布,长期支持版本
  7. 【C语言简单说】十三:变量的生命周期
  8. 领航机器人广告段子_医院机器人物流广告词_段子网收录最新段子
  9. 深度技术win11旗舰稳定版v2021.07
  10. linux下dds软件,【数据库】Linux 单实例环境下实现Oracle数据库和DDS软件的开机自动重启...
  11. springboot多环境配置_编辑 SpringBoot|第五章:多环境配置
  12. 改变程序设计、图灵奖得主、美国第一位计算机科学女博士,程序媛进击史
  13. git21天打卡Day1-linux下安装git
  14. 音乐流媒体服务器Navidrome
  15. adb命令——简单常用命令介绍:截图——adb shell screencap -p /sdcard/123.png...
  16. 批处理系统、分时操作系统、实时操作系统
  17. 用计算机绘制函数图像ppt,ppt怎么制作函数图
  18. word打印设置相关
  19. for(atuo x : s)
  20. zstuACM 问题 H: 超级跳跳跳1281

热门文章

  1. android xlog崩溃日志,腾讯Xlog接入指南与踩过的坑
  2. led流水灯c语言程序移位,LED流水灯程序 移位写法
  3. 台式计算机cpu允许温度,台式cpu温度多少正常呢?老司机科普一下CPU常见问题
  4. python 流水作业调度,流水作业调度完整代码
  5. Echarts 双柱状图+折线图合并---实现效果详解(vue+Echarts实现)
  6. 第27月第25天 clang -rewrite-objc main.m
  7. 2D灯光 Unity2021
  8. 仿照Kafka,从零开始自实现 MQ
  9. PCL NARF关键点提取、SIFT关键点提取、Harris关键点提取
  10. vue生命周期,组件,slot替换,tab切换,简易留言板