SpeedFace-V4L设备上传人脸模板报错-103(人脸版本错误)如何解决?
问题根因
你遇到的-103「人脸版本错误」本质是SpeedFace-V4L搭载的ZKFace VX5.8算法的模板格式,和当前调用的SetUserFaceStr接口默认适配的旧算法格式不匹配。MB2000设备使用的是VX3.0/VX4.0系列低版本ZKFace算法,所以旧接口可以正常运行,不兼容新设备。
解决方案
- 替换高版本算法专用写入接口:Standalone SDK 6.2+版本针对VX5.0及以上人脸算法新增了
SetUserFaceStrEx接口,参数逻辑和原SetUserFaceStr基本一致,仅额外增加了算法版本标识参数,替换原接口后传入算法版本号5即可适配VX5.8系列。 - 校验模板编码与长度:调用
GetUserFaceStr获取的TmpData默认是Base64编码的ANSI字符串,不要做额外转码处理;C#调用时建议给接口字符串参数加上[MarshalAs(UnmanagedType.AnsiBStr)]特性声明,避免.NET默认Unicode转码损坏模板数据;同时直接透传GetUserFaceStr返回的TmpLength参数到写入接口,不要硬编码旧版本的376/512等长度值(VX5.8模板默认长度为792字节)。 - 检查设备写入权限:进入SpeedFace-V4L的系统设置-人脸设置,确认「允许第三方写入人脸模板」选项已开启,部分批次设备出厂默认关闭该权限。
验证方案
调用SDK的GetDeviceInfo接口,传入参数FaceVersion读取设备当前的人脸算法版本号,确认返回值为5之后再调用对应版本的写入接口,避免硬编码版本号出错。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

