汉王红外人脸识别核心及双目活体检测ActiveX控件接口说明

同系列文章

接口说明

/* ----------------------------------------------------------
 * 文件名称:HWFRCOM.dll
 * 作者:秦建辉
 * 
 * 微信:splashcn
 * 
 * 博客:http://www.firstsolver.com/wordpress/
 * 
 * 开发环境:
 *      Visual Studio V2017
 *      .NET Framework 2.0
 *      
 * 版本历史:
 *      V1.0    2018年01月09日
 *              汉王人脸识别与活体检测 ActiveX 控件实现
 *            
 * 参考资料:
 *      http://www.pinvoke.net/default.aspx/Interfaces/IObjectSafety.html
 *
 * 注册命令
 *      %WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe HWFRCOM.dll /codebase
 * 卸载命令
 *      %WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe HWFRCOM.dll /u 
------------------------------------------------------------ */

namespace Splash
{
    [Guid("6CBFBC94-A21E-491D-B073-CF48BE7DCF89"), ProgId("Com.FirstSolver.FR.ActiveX"), ComVisible(true)]
    public class HWFRCOM : IObjectSafety, IDisposable
    {
        /// <summary>
        /// 软件作者
        /// </summary>
        public string Author;

        /// <summary>
        /// 软件版本
        /// </summary>
        public string Version;

		/// <summary>
        /// 算法版本
        /// </summary>
        public string Algorithm;
		
        /// <summary>
        /// 公司名称
        /// </summary>
        public string Company;

        /// <summary>
        /// 错误信息,方法执行后将设置此参数
        /// </summary>
        public string ErrorMessage;

        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns>true:成功 false:失败</returns>
        /// <remarks>如果调用了此方法,记得调用 Dispose 方法释放资源。如果仅做活体检测,不需要调用此方法</remarks>
        public bool Initialize();

        /// <summary>
        /// 释放资源。如果没有调用 Initialize 方法,则不需要调用此方法
        /// </summary>
        public void Dispose();

        /// <summary>
        /// 设置人脸最小检测距离。值范围为40~100,默认为50
        /// </summary>
        /// <param name="value">人脸最小检测距离</param>
        /// <returns>true:成功 false:失败</returns>
        public bool SetMinFace(int value);

        /// <summary>
        /// 确定是否是人脸图像
        /// </summary>
        /// <param name="value">0-不确定 1-确定,默认为0</param>
        /// <returns>true:成功 false:失败</returns>
        public bool SetPortrait(int value);

        /// <summary>
        /// 图像像素宽度,ToGray、ToGrayByStr方法执行后将设置此参数
        /// </summary>
        public int PixelWidth;

        /// <summary>
        /// 图像像素高度,ToGray、ToGrayByStr方法执行后将设置此参数
        /// </summary>
        public int PixelHeight;

		 /// <summary>
        /// 相似度得分,CompareFeature、CompareImage、CompareFeatureByStr、CompareImageByStr方法执行后将设置此参数
        /// </summary>
        public float SimilarityScore;
		
        /// <summary>
        /// 图像灰度处理
        /// </summary>
        /// <param name="image">原始图像数据,Base64编码字符串</param> 
        /// <returns>图像灰度数组,Base64编码字符串</returns>
        public string ToGrayByStr(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="maxFaceNum">希望检测的最大人脸数,不超过8张人脸</param>
        /// <returns>多个人脸信息的JSON字符串</returns>
        public string DetectByStr(string gray, int width, int height, int maxFaceNum);

        /// <summary>
        /// 提取单个人脸模板
        /// </summary>
        /// <param name="gray">人脸图像灰度数组,Base64编码字符串</param>
        /// <param name="width">图像像素宽度</param>
        /// <param name="height">图像像素高度</param>
        /// <param name="face">单个人脸信息JSON字符串</param>
        /// <returns>单个人脸模板,Base64编码字符串</returns>
        public string ExtractFeatureByStr(string gray, int width, int height, string face);

        /// <summary>
        /// 计算两个人脸模板的相似度得分
        /// </summary>
        /// <param name="featureSource">源模板,Base64编码字符串</param>
        /// <param name="featureTarget">目标模板,Base64编码字符串</param>
        /// <returns>true:成功 false:失败</returns>
        public bool CompareFeatureByStr(string featureSource, string featureTarget);

        /// <summary>
        /// 计算两幅图像的相似度得分
        /// </summary>
        /// <param name="imageSource">源图像,Base64编码字符串</param>
        /// <param name="imageTarget">目标图像,Base64编码字符串</param>
        /// <returns>true:成功 false:失败</returns>
        public bool CompareImageByStr(string imageSource, string imageTarget);

        /// <summary>
        /// 人脸活体判断
        /// </summary>
        /// <param name="IrImag">红外图像数据,Base64编码字符串</param>
        /// <param name="NaImage">可见光图像数据,Base64编码字符串</param>
        /// <returns>-1:失败 0:非活体 1:活体 2:不确定</returns>
        /// <remarks>该函数不需要调用 Initialize 方法</remarks>
        public int IsLivenessByStr(string IrImag, string NaImage);
 
        /// <summary>
        /// 读取文件内容作为字节数组
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns>文件内容的字节数组</returns>
        public byte[] ReadFileToByteArray(string FileName);

        /// <summary>
        /// 读取文件内容作为Base64字符串
        /// </summary>
        /// <param name="FileName">文件名</param>
        /// <returns>文件内容的Base64字符串</returns>
        public string ReadFileToBase64String(string FileName);
    }
}

Comments are closed.