C#测试开源人脸识别模块FaceRecognitionDotNet

  微信公众号“dotNET跨平台”的文章《基于 C# 开源的功能强大 .NET 人脸识别 API》介绍了据说是目前最简单的.NET开源人脸识别模块FaceRecognitionDotNet,支持 Windows、 Linux、MacOSX等平台,其基于face_recognition、face_recognition_models、dlib、DlibDotNet、OpenCVSharp等模块,具备人脸识别、头部姿态估计、眨眼检测等功能,本文主要测试FaceRecognitionDotNet的人脸识别功能的基本用法。
  新建Winform项目,在Nuget包管理器中搜索并安装FaceRecognitionDotNet,不过实际测试过程中使用从Nuget包管理器安装的FaceRecognitionDotNet模块加载模型文件报错,具体解决方法详见上一篇文章,最后是将参考文献2的项目源码下载到本地,测试项目直接引用的本地项目。

在这里插入图片描述
  既然说是最简单的模块,其使用肯定便捷,最重要的是FaceRecognition类,主要包括三步:
  第一步:调用FaceRecognition.Create静态函数构建实例,同时从指定文件夹加载模型文件。
  第二步:调用FaceRecognition.LoadImageFile从本地加载待人脸识别的图片,不过需注意路径中不要有中文字符,否则会报错,不清楚是否跟编码有关系。
  第三步:调用FaceRecognition.FaceLocations获取图片中的人脸位置,返回的位置信息为图片中的人脸左上角及右下角坐标,单位为像素。
  如果要在图片中标注人脸区域,目前还没从FaceRecognitionDotNet模块相关文档和示例中看到向图片中绘制内容的代码片段,不过FaceRecognitionDotNet.Image类提供的ToBitmap函数能将FaceRecognitionDotNet.Image转换为System.Drawing.Bitmap类型,后续直接使用的GDI+的Graphics对象绘制的人脸区域的矩形。主要代码如下所示:

FaceRecognition faceRecognition = FaceRecognition.Create("Models");
...
...
using (var unknownImage = FaceRecognition.LoadImageFile(picImage.Tag.ToString()))
{
    var faceLocations = faceRecognition.FaceLocations(unknownImage).ToArray();
    using Pen p = new Pen(Color.Red, 5);
    System.Drawing.Bitmap image = unknownImage.ToBitmap();
    using Graphics graphics = Graphics.FromImage(image);
    foreach (var faceLocation in faceLocations)
    {
        graphics.DrawRectangle(p, faceLocation.Left, faceLocation.Top, faceLocation.Right - faceLocation.Left, faceLocation.Bottom - faceLocation.Top);
    }    
}

  最后是人脸识别的效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://blog.csdn.net/sd7o95o/article/details/139251088
[2]https://github.com/takuya-takeuchi/FaceRecognitionDotNet/tree/master
[3]https://github.com/takuya-takeuchi/FaceRecognitionDotNet/issues/114
[4]https://blog.csdn.net/qq_29881799/article/details/134267102
[5]https://blog.csdn.net/gitblog_00021/article/details/137539182
[6]https://stackoverflow.com/questions/50349818/dlib-error-deserializing-object-of-type-unsigned-long-while-deserializing-object

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值