记C# 调用虹软人脸识别 那些坑

原文地址:https://www.cnblogs.com/Sientuo/p/11762245.html

 

 正常使用肯定时作为类库调用,在项目中新建一类库,将Demo中需要用到的类文件拷贝,再将初始化引擎和提取特征,比对特征的方法提出来单独建立cs类方便调用,然后拷贝对应版本的SDK,一运行就是报错,初始化失败,错误值90113(官方文档表示 dll文件无访问权限,或当前目录可用空间不足),按照网上解决方案,选中sdk下的三个dll文件,右键属性,添加读写权限(仍然90113),然后所在文件夹添加读写权限(仍然90113),最后项目根目录添加仍然没有改变,这里还是赞扬一下虹软的反馈时效,工作期间提交工单基本半个小时内就有反馈。 其次百度,发现铺天盖地的说的都是缺少dll文件,却没有一个整体情况的说明,而且也没告知运行的版本,环境,很难对症下药,各种操作一番很耽误功夫,也没效果,着实让人抓狂。 

初始化引擎失败 (90113)

  ① VS管理员身份运行

  ② 程序池-发布项目-高级设置-标识-LoacalSystem

  ③电脑缺少2013C++运行库,部署不同服务器的时候,保不齐有个服务器缺少环境(2.2,3.0 对应的是2013版本的C++库,2015库无效)

当然初始化引擎成功只是第一步,实际运用中,比如 传图片获取特征值时,基于虹软目前最新发布的2.2 的版本中,在处理图片提取特征前,加入了活体检测的功能,引用了 Emgu.CV.World.dll 这个dll(如果程序用不上活体,可以屏蔽,使用旧版本的图像处理方法ImageUtil.ReadBMP),于是各种问题接踵而至

无法加载 DLL“libarcsoft_fsdk_face_detection.dll”: 找不到指定的模块 ,这个错误很常见,可能的原因也有很多,就目前整理的情况如下

①该dll 缺失,检查bin目录是否存在此文件

②该dll 依赖的其他dll缺失

Emgu.CV.CvInvoke的类型初始值设定项引发异常(无法加载 DLL“cvextern”: 找不到指定的模块),这个错误很坑爹,处理起来比较花费时间

①缺少cvextern.dll,将demo中debug下的x64/x86文件夹拷贝到项目的bin目录下(连同文件夹)

②电脑缺少Opencv依赖的环境(一般是部署在Windows Server的服务器),服务器里面添加功能时,勾选墨迹和手写服务、桌面安装两项即可。

③项目根目录是否缺少x64/x86文件夹及其下对应dll

④运行环境缺少指定的补丁包 ,尝试下载并安装 Windows8.1-KB2999226-x64 (Windows Server 2012服务器)程序包完成更新后,重启计算机

⑤若程序不需要IR活体检测,可以参照2.0的版本来读取图片消息(ReadBMP)

视图加载格式不正确的程序 这个错误有坑(虹软3.0增值版 32位)

①IIS 程序池-启用32位应用程序--选择 true

②检查当前电脑是否有 2013C++运行库 ,重点来了,32位sdk时,下载的c++ 运行库也要对应的32位版本

    目前针对C# 64位调用虹软2.2 人脸识别中遇到的问题就这些, C# 32位调用虹软3.0 人脸识别(增加口罩功能),再处理完以上问题之后,暂时未发现新的环境问题。看起来其实没多少,只是这些解决方案的背后都是无数次的百度,和花费大量时间成本验证后得到的方案,为此作为记录。

 

 

附录:

public enum ResultCode
    {
        成功 = 0,
        错误原因不明 = 1,
        无效的参数 = 2,
        引擎不支持 = 3,
        内存不足 = 4,
        状态错误 = 5,
        用户取消相关操作 = 6,
        操作时间过期 = 7,
        用户暂停操作 = 8,
        缓冲上溢 = 9,
        缓冲下溢 = 10,
        存贮空间不足 = 11,
        组件不存在 = 12,
        全局数据不存在 = 13,
        无效的AppId = 28673,
        无效的SDKKey = 28674,
        AppId和SDKKey不匹配 = 28675,
        SDKKey和使用的SDK不匹配 = 28676,
        系统版本不被当前SDK所支持 = 28677,
        SDK有效期过期_需要重新下载更新 = 28678,
        无效的输入内存 = 73729,
        无效的输入图像参数 = 73730,
        无效的脸部信息1 = 73731,
        当前设备无GPU可用 = 73732,
        待比较的两个人脸特征的版本不一致 = 73733,
        人脸特征检测错误未知 = 81921,
        人脸特征检测内存错误 = 81922,
        人脸特征检测格式错误 = 81923,
        人脸特征检测参数错误 = 81924,
        人脸特征检测结果置信度低 = 81925,
        Engine不支持的检测属性 = 86017,
        需要检测的属性未初始化 = 86018,
        待获取的属性未在process中处理过 = 86019,
        PROCESS不支持的检测属性 = 86020,
        无效的输入图像 = 86021,
        无效的脸部信息2 = 86022,
        SDK激活失败_请打开读写权限 = 90113,
        SDK已激活 = 90114,
        SDK未激活 = 90115,
        detectFaceScaleVal不支持 = 90116,
        SDK版本不匹配 = 90117,
        设备不匹配 = 90118,
        唯一标识不匹配 = 90119,
        参数为空 = 90120,
        活体检测功能已过期 = 90121,
        版本不支持 = 90122,
        签名错误 = 90123,
        数据库插入错误 = 90124,
        唯一标识符校验失败 = 90125,
        颜色空间不支持 = 90126,
        图片宽度或高度不支持 = 90127,
        READ_PHONE_STATE权限被拒绝 = 90128,
        激活数据被破坏, 请删除激活文件_重新进行激活 = 90129,
        无法解析主机地址 = 94209,
        无法连接服务器 = 94210,
        网络连接超时 = 94211,
        网络未知错误 = 94212,
        无法连接激活码服务器 = 98305,
        服务器系统错误 = 98306,
        请求参数错误 = 98307,
        激活码正确_且未被使用_但和传入的APPID及APPKEY不匹配 = 98308,
        传入的KEY值虽然正确_但此KEY已经被激活 = 98309,
        KEY格式不对_一般来说是KEY错误或者未传入KEY值 = 98310

    }

 

你可能感兴趣的:(杂七杂八)