同系列文章
接口说明
/* ---------------------------------------------------------- * 文件名称:FaceLiveActiveX.dll * 作者:秦建辉 * * 微信:splashcn * * 博客:http://www.firstsolver.com/wordpress/ * * 开发环境: * Visual Studio V2017 * .NET Framework 2.0 * * 版本历史: * V1.0 2018年03月08日 * 人脸识别单目活体检测控件 * * 注册命令 * %WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe FaceLiveActiveX.dll /codebase * 卸载命令 * %WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe FaceLiveActiveX.dll /u ------------------------------------------------------------ */ namespace Com.FirstSolver.FR { [Guid("1822376E-B6BF-4402-8210-4C335AB8CC09"), ProgId("Com.FirstSolver.FR.LiveActiveX"), ComVisible(true)] public partial class FRLiveControl : UserControl, IObjectSafety { /// <summary> /// 软件作者 /// </summary> public string Author; /// <summary> /// 软件版本 /// </summary> public string Version; /// <summary> /// 公司名称 /// </summary> public string Company; /// <summary> /// 错误信息,方法执行后将设置此参数 /// </summary> public string ErrorMessage; /// <summary> /// 控件宽度 /// </summary> public int ControlWidth; /// <summary> /// 控件高度 /// </summary> public int ControlHeight; /// <summary> /// 初始化 /// </summary> /// <param name="config">配置信息,设置为"183.62.254.98:61808"</param> /// <returns>true:成功 false:失败</returns> public bool Initialize(string config); /// <summary> /// 释放资源 /// </summary> public void Close(); /// <summary> /// 图像像素宽度,ToGray、ToGrayByStr方法执行后将设置此参数 /// </summary> public int PixelWidth; /// <summary> /// 图像像素高度,ToGray、ToGrayByStr方法执行后将设置此参数 /// </summary> public int PixelHeight; /// <summary> /// ToGrayAndRgb、ToGrayAndRgbByStr方法执行后存储图像的Base64编码的RGB数组 /// </summary> public string RgbArray; /// <summary> /// 图像灰度处理 /// </summary> /// <param name="image">原始图像数据,Base64编码字符串</param> /// <returns>图像灰度数组,Base64编码字符串</returns> public string ToGrayByStr(string image); /// <summary> /// 图像灰度处理,同时获取图像的RGB数组 /// </summary> /// <param name="image">原始图像数据,Base64编码字符串</param> /// <returns>图像灰度数组,Base64编码字符串</returns> /// <remarks>同时在RgbArray存储图像的RGB数组</remarks> public string ToGrayAndRgbByStr(string image); /// <summary> /// 检测一张人脸 /// </summary> /// <param name="gray">人脸图像灰度数组,Base64编码字符串</param> /// <param name="width">图像像素宽度</param> /// <param name="height">图像像素高度</param> /// <returns>单个人脸信息的JSON字符串</returns> public string DetectOneByStr(string gray, int width, int height); /// <summary> /// 检测多张人脸 /// </summary> /// <param name="gray">人脸图像灰度数组,Base64编码字符串</param> /// <param name="width">图像像素宽度</param> /// <param name="height">图像像素高度</param> /// <param name="num">希望检测的最大人脸数,不超过8张人脸</param> /// <returns>多个人脸信息的JSON字符串</returns> public string DetectByStr(string gray, int width, int height, int num); /// <summary> /// 静态图像的活体判断 /// </summary> /// <param name="image">图像数据,Base64编码字符串</param> /// <returns>-1:失败 0:非活体 1:活体 2:不确定</returns> public int IsLivenessByStr(string image); /// <summary> /// 开启视频 /// </summary> /// <param name="moniker">设备标识字符串</param> /// <returns>true:成功 false:失败</returns> public bool StartVideo(string moniker = null); /// <summary> /// 停止视频 /// </summary> /// <returns>true:成功 false:失败</returns> public bool StopVideo(); /// <summary> /// 启动活体检测 /// </summary> /// <returns>true:成功 false:失败</returns> public bool AssayLivenessStart(); /// <summary> /// 取消活体检测 /// </summary> public void AssayLivenessCancel(); /// <summary> /// 静态活体检测最大帧数 /// </summary> public int StaticLivenessFrameNum = 15; /// <summary> /// 动作活体检测最大帧数 /// </summary> public int DynamicLivenessFrameNum = 30; /// <summary> /// 捕获视频图像 /// </summary> /// <returns>Base64编码的图像字符串</returns> public string GetCurrentVideoFrameByStr(); /// <summary> /// 动作提示通知 /// </summary> /// <param name="motion">动作编号</param> /// <remarks> /// 6:张嘴动作("开始活体检测,请张嘴!") /// 7:眨眼动作("开始活体检测,请眨眼!") /// </remarks> public delegate void MotionTipsNotifyHandler(int motion); public event MotionTipsNotifyHandler OnNotifyMotion; /// <summary> /// 检测结果通知 /// </summary> /// <param name="answer">检测结果</param> /// <remarks> /// -1:异常 /// 0:非活体 /// 1:活体 /// 2:不确定 /// </remarks> public delegate void AssayLivenessNotifyHandler(int answer); public event AssayLivenessNotifyHandler OnNotifyAnswer; /// <summary> /// 获取视频输入设备信息集合 /// </summary> /// <returns>视频输入设备信息集合</returns> public VideoInputDeviceInfo[] GetVideoInputDeviceInfoCollection(); /// <summary> /// 获取视频输入设备信息集合 /// </summary> /// <returns>JSON字符串表示的视频输入设备信息集合</returns> public string GetVideoInputDeviceInfoCollectionByStr(); } /// <summary> /// 视频输入设备信息 /// </summary> public class VideoInputDeviceInfo { /// <summary> /// 显示名称 /// </summary> public string Name; /// <summary> /// 设备标识名称 /// </summary> public string MonikerString; } }