汉王可见光单目活体检测ActiveX控件接口说明

同系列文章

接口说明

/* ----------------------------------------------------------
 * 文件名称: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;
    }
}

Comments are closed.