同系列文章
接口说明
/* ---------------------------------------------------------- * 文件名称: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); } }