ArcFaceSharp

ArcFaceSharp 是ArcSoft 虹软 ArcFace 2.0 SDK 的一个 C# 封装库,为方便进行 C# 开发而封装。欢迎 Start & Fork。

使用

在 Nuget 搜索 ArcFaceSharp 安装。

  1. PM> Install-Package ArcFaceSharp -Version 1.0.2

或者下载dll导入。

导入 ArcFaceSharp 后,将自己申请到的 ArcFace2.0 SDK 的 dll 文件 (libarcsoft_face.dll 和 libarcsoft_face_engine.dll)放在程序的运行目录下。

接口调用的流程可参考官方文档的流程图(http://ai.arcsoft.com.cn/manual/arcface_windows_guideV2.html 2.1.5调用流程)

主要 API

具体参数和含义可以自行查看方法的注释

  • 激活及初始化

创建 ArcFaceCore对象即可

  1. ArcFaceCore arcFaceCore = ArcFaceCore(appId, sdkKey, detectMode, combinedMask,detectFaceOrientPriority, detectFaceMaxNum,detectFaceScaleVal);

  • 将 Bitmap 转换成 ImageData
  1. ImageData imageData = ImageDataConverter.ConvertToImageData(bitmap);


以下方法都是 ArcFaceCore 中的方法

  • 人脸检测
  1. MultiFaceModel multiFaceModel = arcFaceCore.FaceDetection(imageData);

  • 人脸信息检测(年龄/性别/人脸3D角度)最多支持4张人脸信息检测,超过部分返回未知
  1. // 人脸信息检测 先调用这个接口才能获取以下三个信息
  2. arcFaceCore.FaceProcess(imageData,multiFaceModel);
  3. //获取年龄信息
  4. List<int> ageList = arcFaceCore.GetAge();
  5. // 获取性别信息
  6. List<int> genderList = arcFace.GetGender();
  7. // 获取人脸角度信息
  8. List<Face3DAngleModel> face3DAngleList = arcFace.GetFace3DAngle();

  • 人脸特征值提取

asfSingleFaceInfo 为人脸检测接口返回的人脸信息中的其中一个人脸信息

  1. AsfFaceFeature asfFaceFeature = arcFace.FaceFeatureExtract(imageData, ref asfSingleFaceInfo);

  • 人脸对比
  1. float result = arcFace.FaceCompare(asfFaceFeature1, asfFaceFeature2);

  • 异常捕获

以人脸特征提取为例,当借口返回值不为 0(成功)时,则会抛出 ResultCodeException 异常。

  1. try
  2. {
  3. AsfFaceFeature asfFaceFeature = arcFace.FaceFeatureExtract(imageData, ref asfSingleFaceInfo);
  4. }
  5. catch (ResultCodeException e)
  6. {
  7. Console.WriteLine(e.ResultCode);
  8. throw;
  9. }


代码示例:

\ArcFaceSharpUnitTest\UnitTest1.cs

  1. public void TestMethod1()
  2. {
  3. // SDK对应的 APP_ID SDK_KEY
  4. string APP_ID = @"7NK7KSpfgxdqb74r8nvy36kDwH3wVGstr2LHGHBxQ8LY";
  5. string SDK_KEY = @"3fD8vKYMNfPzKHMoqppjA9chGh2aGkWzUQNFiAj7Yq63";
  6. // 加载图片
  7. Bitmap heying = new Bitmap(@"heying.jpg");
  8. Bitmap face1 = new Bitmap(@"ldh0.jpg");
  9. Bitmap face2 = new Bitmap(@"ldh1.jpg");
  10. Bitmap face3 = new Bitmap(@"zxy0.jpg");
  11. // 创建 ArcFaceCore 对象,向构造函数传入相关参数进行 ArcFace 引擎的初始化
  12. ArcFaceCore arcFace = new ArcFaceCore(APP_ID,SDK_KEY,ArcFaceDetectMode.IMAGE,
  13. ArcFaceFunction.FACE_DETECT | ArcFaceFunction.FACE_RECOGNITION | ArcFaceFunction.AGE | ArcFaceFunction.FACE_3DANGLE | ArcFaceFunction.GENDER,DetectionOrientPriority.ASF_OP_0_ONLY,50,32);
  14. // 将 Bitmap 转换成 ImageData
  15. ImageData heyingImgData = ImageDataConverter.ConvertToImageData(heying);
  16. // 人脸检测
  17. // 也可直接传入 Bitmap 来调用相关接口 会自动转换成 ImageData,但这里推荐用 ImageData
  18. MultiFaceModel multiFaceB = arcFace.FaceDetection(heying);
  19. // 传入 ImageData ,推荐使用这个接口
  20. MultiFaceModel multiFace = arcFace.FaceDetection(heyingImgData);
  21. // 人脸信息检测(年龄/性别/人脸3D角度)最多支持4张人脸信息检测,超过部分返回未知 这是官方文档的说明
  22. arcFace.FaceProcess(heyingImgData, multiFace);
  23. // 获取年龄信息
  24. List<int> ageList = arcFace.GetAge();
  25. // 获取性别信息
  26. List<int> genderList = arcFace.GetGender();
  27. // 获取人脸角度信息
  28. List<Face3DAngleModel> face3DAngleList = arcFace.GetFace3DAngle();
  29. // 将第一张图片的 Bitmap 转换成 ImageData
  30. ImageData faceData1 = ImageDataConverter.ConvertToImageData(face1);
  31. // 检测第一张图片中的人脸
  32. MultiFaceModel multiFace1 = arcFace.FaceDetection(faceData1);
  33. // 取第一张图片中返回的第一个人脸信息
  34. AsfSingleFaceInfo faceInfo1 = multiFace1.FaceInfoList.First();
  35. // 提第一张图片中返回的第一个人脸的特征
  36. AsfFaceFeature faceFeature1 = arcFace.FaceFeatureExtract(faceData1, ref faceInfo1);
  37. ImageData faceData2 = ImageDataConverter.ConvertToImageData(face2);
  38. // 检测第二张图片中的人脸
  39. MultiFaceModel multiFace2 = arcFace.FaceDetection(faceData2);
  40. // 取第二张图片中返回的第一个人脸信息
  41. AsfSingleFaceInfo faceInfo2 = multiFace2.FaceInfoList.First();
  42. // 提第二张图片中返回的第一个人脸的特征
  43. AsfFaceFeature faceFeature2 = arcFace.FaceFeatureExtract(faceData2, ref faceInfo2);
  44. // face1 face2 人脸对比,将会返回一个 0-1 之间的浮点数值
  45. float result = arcFace.FaceCompare(faceFeature1, faceFeature2);
  46. ImageData faceData3 = ImageDataConverter.ConvertToImageData(face3);
  47. // 检测第三张图片中的人脸
  48. MultiFaceModel multiFace3 = arcFace.FaceDetection(faceData3);
  49. // 取第三张图片中返回的第一个人脸信息
  50. AsfSingleFaceInfo faceInfo3 = multiFace3.FaceInfoList.First();
  51. // 提第三张图片中返回的第一个人脸的特征
  52. AsfFaceFeature faceFeature3 = arcFace.FaceFeatureExtract(faceData3, ref faceInfo3);
  53. // face1 face3 人脸对比,将会返回一个 0-1 之间的浮点数值
  54. float result2 = arcFace.FaceCompare(faceFeature1, faceFeature3);
  55. // 释放销毁引擎
  56. arcFace.Dispose();
  57. // ImageData使用完之后记得要 Dispose 否则会导致内存溢出
  58. faceData1.Dispose();
  59. faceData2.Dispose();
  60. // BItmap也要记得 Dispose
  61. face1.Dispose();
  62. face2.Dispose();
  63. }

感谢

本项目参考了以下开发者的一些思路和代码,在此表示感谢。

C#_Demo_摄像头实时_4线程人脸识别_注册 - Demo 分享 - 虹软人工智能引擎开发者论坛 - Powered by Discuz!https://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=673&extra=page%3D1

虹软2.0版本人脸检测C#类库分享 - 第2页 - ArcFace - 虹软人工智能引擎开发者论坛 - Powered by Discuz!https://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=1274&extra=page%3D1&page=2

C#人脸检测与动态人脸识别显示坐标 视频人脸识别WINFORM - ArcFace - 虹软人工智能引擎开发者论坛 - Powered by Discuz! https://ai.arcsoft.com.cn/bbs/forum.php?mod=viewthread&tid=648&extra=page%3D1

另外

欢迎打赏哈哈~

离线人脸识别 ArcFaceSharp -- ArcFace 2.0 SDK C#封装库分享的更多相关文章

  1. C#版免费离线人脸识别——虹软ArcSoft V3.0

    [温馨提示] 本文共678字(不含代码),8张图.预计阅读时间需要6分钟. 1. 前言 人脸识别&比对发展到今天,已经是一个非常成熟的技术了,而且应用在生活的方方面面,比如手机.车站.天网等. ...

  2. 百度离线人脸识别sdk的使用

    1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...

  3. windows下百度离线人脸识别本地部署与使用(nodejs做客户端,c++做服务端,socket做通信)

    1.离线人脸识别本地部署 详情请阅读百度人脸识别官网 2.nodejs做socket通信的客户端 为什么不直接通过调用c++编译的exe获得人脸识别结果? 原因:exe运行时会加载很多模型而消耗很多时 ...

  4. Java离线人脸识别SDK 支持arcface 2.0 最新版

    虹软人脸识别SDK之Java版,支持SDK 1.1+,以及当前最新版本2.0,滴滴,抓紧上车! JDK SDK Win release license status 前言 由于业务需求,最近跟人脸识别 ...

  5. C# 离线人脸识别Demo 使用ArcFace 2.0开发完成

    环境:     win7以上  VS2013以上    sdk版本:ArcFace v2.0    x86 x64平台Debug.Release配置都已通过编译 下载地址:https://github ...

  6. 虹软离线人脸识别 ArcFace 2.0 Demo [C++]

    环境: win10(10.0.16299.0)+ VS2017 sdk版本:ArcFace v2.0 OPENCV3.43版本 x64平台Debug.Release配置都已通过编译 下载地址:http ...

  7. 基于Arcface 免费离线人脸识别 2.0 Demo C#

    本来打算做个C#版demo,但没用成功.使用虹软最新人脸识别技术开发完成 过程如下: 1. 传入一张单人脸照片: 2.调用检测人脸函数ASFDetectFaces,成功返回人脸信息的指针: 3.使用 ...

  8. python3+arcface2.0 离线人脸识别 demo

    python3+虹软2.0的所有功能整合测试完成,并对虹软所有功能进行了封装,现提供demo主要功能,1.人脸识别2.人脸特征提取3.特征比对4.特征数据存储与比对其他特征没有添加 sdk 下载请戳这 ...

  9. 虹软2.0免费离线人脸识别 Demo [C++]

    环境: win10(10.0.16299.0)+ VS2017 sdk版本:ArcFace v2.0 OPENCV3.43版本 x64平台Debug.Release配置都已通过编译 下载地址:http ...

随机推荐

  1. 【转】iOS:AvPlayer设置播放速度不生效的解决办法

    现象: 项目有一个需求是实现视频的慢速播放,使用的是封装的AvPlayer,但是设置时发现比如设置rate为0.5,0.1,0.01都是一样的速度,非常疑惑.后来经过查找资料,发现iOS10对这个AP ...

  2. J - Relief grain HDU - 5029

    Relief grain Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others)T ...

  3. JS 兼容大全

    //获取浏览器可视区宽度 function getWidth() { if (window.innerWidth){ return window.innerWidth; } else{ if (doc ...

  4. 关于wordpress主题、插件上传和下载问题及其上传图片权限问题解决方案

    主题官方下载地址:https://wordpress.org/themes/ 插件官方下载地址: https://wordpress.org/plugins/ 主题的上传下载,无疑是需要ftp服务器的 ...

  5. Windows下基于Python3安装Ipython Notebook(即Jupyter)。python –m pip install XXX

    1.安装Python3.x,注意修改环境变量path(追加上python安装目录,如:D:\Program Files\Python\Python36-32) 2.查看当前安装的第三方包:python ...

  6. python操作数据库(Mysql)

    原文地址:https://www.cnblogs.com/R-bear/p/7022231.html python DB-API介绍 1.python标准数据库接口为 python DB-API,py ...

  7. layer关闭当前窗口并刷新父窗口

    window.parent.location.reload(); var index = parent.layer.getFrameIndex(window.name); parent.layer.c ...

  8. 【gulp】Gulp的安装和配置 及 系列插件

    注意:要安装俩次gulp(全局和本地):全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能. 之前由大牛帮忙配置的gulp来用.今天时间充裕,就和小伙伴一起动手配置 ...

  9. 小白python语言基础

    程序概念层级 表达式 语句包含表达式 包和模块 程序 变量与储存 变量:对象的别名 命名规则:字母.数字.下划线 只能以字母或下划线开头     能包含空格/中文 避免python关键字或函数名 简短 ...

  10. golang日志收集方案之ELK

    每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常也会涉及到 ...