完善个人信息

完善您的账号信息,便于为您提供更精准的服务

跳过
开发者类型:
企业名称:
联系人姓名:
真实姓名:
行业:
地区:

 无标题文档
人证核验 Windows开放文档
API 接口说明
1. 概述
虹软人脸识别引擎工作流程图:


01. 运行环境
  • Windows

02. 系统要求
  • (x86)SDK:32位系统、64位系统,Windows7 以上
  • (x64)SDK:64位系统,Windows7 以上

03. 依赖库
  • None
2. 结构与常量
01. 基本类型
所有基本类型在平台库中有定义。 定义规则是在 ANSIC 中的基本类型前加上字母“M”同时将类 型的第一个字母改成大写。例如“long” 被定义成“MLong”

02. 数据结构
AFIC_FSDK_FACERES
功能描述
脸部信息
定义
typedef struct { 
		MInt32 nFace;                      // number of faces detected 
   		MRECT rcFace;                      // The bounding box of face 
} AFIC_FSDK_FACERES, *LPAFIC_FSDK_FACERES;
 
AFIC_FSDK_VERSION
功能描述
引擎版本信息
定义
typedef struct { 
		MInt32 lCodebase;  // Codebase version number 
		MInt32 lMajor;  // Major version number 
 		MInt32 lMinor;  // Minor version number 
 		MInt32 lBuild;  // Build version number, increasable only 
		MPChar Version;  // Version in string form 
 		MPChar BuildDate;  // Latest build Date 
 		MPChar CopyRight;  // Copyright 
}AFIC_FSDK_VERSION; 
 
03. 枚举
支持的颜色格式
描述
颜色格式及其对齐规则
定义
ASVL_PAF_I420 8-bit Y 层,之后是 8-bit 的 2x2 采样的 U 层和 V 层 
ASVL_PAF_YUYV Y0, U0, Y1, V0 
ASVL_PAF_RGB24_B8G8R8 BGR24, B8G8R8 
 
3. API Reference
01. ArcSoft_FIC_InitialEngine
原型
MRESULT ArcSoft_FIC_InitialEngine(  
		MPChar  ID,  
		MPChar  SDKKEY,  
		MHandle *  phFICEngine 
);
 
功能描述
初始化引擎
参数
ID		[in]		用户申请 SDK 时获取的 id 
SDKKEY		[in]		用户申请 SDK 时获取的 key 
phFICEngine		[out]		引擎 handle 
 


返回值
成功返回 MOK,否则返回失败 code。失败 codes如下所列:
MERR_INVALID_PARAM							参数输入非法 
MERR_FSDK_INVALID_APP_ID						无效的 AppId 
MERR_FSDK_INVALID_SDK_ID						无效的 SDKkey 
MERR_FSDK_INVALID_ID_PAIR						AppId 和 SDKKey不匹配 
MERR_FSDK_MISMATCH_ID_AND_SDK				SDKKey 和使用的 SDK 不匹配 
MERR_FSDK_SYSTEM_VERSION_UNSUPPORTED 	系统版本不被当前 SDK所支持 
MERR_FSDK_LICENCE_EXPIRED             				SDK有效期过期,需要重新下载更新 
 
AFIC_FSDK_VERSION
功能描述
引擎版本信息
定义
typedef struct { 
		MInt32 lCodebase;  // Codebase version number 
		MInt32 lMajor;  // Major version number 
 		MInt32 lMinor;  // Minor version number 
 		MInt32 lBuild;  // Build version number, increasable only 
		MPChar Version;  // Version in string form 
 		MPChar BuildDate;  // Latest build Date 
 		MPChar CopyRight;  // Copyright 
}AFIC_FSDK_VERSION; 
 
03. 枚举
支持的颜色格式
描述
颜色格式及其对齐规则
定义
ASVL_PAF_I420 8-bit Y 层,之后是 8-bit 的 2x2 采样的 U 层和 V 层 
ASVL_PAF_YUYV Y0, U0, Y1, V0 
ASVL_PAF_RGB24_B8G8R8 BGR24, B8G8R8 
 
02. ArcSoft_FIC_FaceDataFeatureExtraction
原型
MRESULT ArcSoft_FIC_FaceDataFeatureExtraction( 
		MHandle  hFICEngine,  
		MBool   isVideo,  
		LPASVLOFFSCREEN   pInputFaceData,  
		LPAFIC_FSDK_FACERES  pFaceRes 
 ); 
 
功能描述
获取脸部特征
参数
hFICEngine 		[in] 		FIC 引擎 Handle 
isVideo 			[in] 		人脸数据类型 1-视频 0-静态图片 
pInputFaceData 	[in] 		人脸图像原始数据 
pFaceRes 		[out] 	人脸属性 		人脸数/人脸框 
 


返回值
成功返回 MOK,否则返回失败 code。失败 codes如下所列:
MERR_INVALID_PARAM    						参数输入非法 
MERR_FSDK_FIC_UNDETECTED_FACE  			未检测到人脸
 MERR_FSDK_FIC_FEATURE_EXTRACTION_FAIL 	特征提取失败 
 
03. ArcSoft_FIC_IdCardDataFeatureExtraction
原型
MRESULT ArcSoft_FIC_IdCardDataFeatureExtraction( 
 		MHandle   hFICEngine, 
 		LPASVLOFFSCREEN  pInputIdcardData 
 ); 
 
功能描述
证件照信息提取.
参数
hFICEngine 				[in] 	FIC 引擎 
Handle pInputIdcardData 	[in] 	图像原始数据 
 


返回值
成功返回 MOK,否则返回失败 code。失败 codes如下所列:
MERR_INVALID_PARAM    						参数输入非法 
MERR_FSDK_FIC_UNDETECTED_FACE  			未检测到人脸 
MERR_FSDK_FIC_FEATURE_EXTRACTION_FAIL 	特征提取失败  
 
04. ArcSoft_FIC_FaceIdCardCompare
原型
MRESULT ArcSoft_FIC_FaceIdCardCompare( 
 		MHandle  hFICEngine,       
 		MFloat  threshold,   
 		MFloat *  pSimilarScore,  
 		MInt32 *  pResult   
 );
 
功能描述
人证比对
参数
hFICEngine 		[in] 			FIC 引擎 
Handle threshold 	[in] 			比对阈值 
pSimilarScore 		[out] 		比对结果相似度 
pResult 			[out] 		比对结果 
 


返回值
成功返回 MOK,否则返回失败 code。失败 codes如下所列:
MERR_INVALID_PARAM    							参数输入非法 
MERR_FSDK_FIC_UNDETECTED_FACE  				未检测到人脸 
MERR_FSDK_FIC_FEATURE_EXTRACTION_FAIL 		特征提取失败 
 
05. ArcSoft_FIC_UninitialEngine
原型
MRESULT ArcSoft_FIC_UninitialEngine( 
	 	MHandle  hFICEngine 
 ); 
 
功能描述
结束引擎
参数
hFICEngine 		[in] 		FIC 引擎 Handle 
 


返回值
成功返回 MOK,否则返回失败 code。失败 codes如下所列:
MERR_INVALID_PARAM 		参数输入非法   
 
06. AFR_FSDK_GetVersion
原型
hFICEngine [in] FIC 引擎 Handle 
 
功能描述
获取引擎版本信息.
返回值
成功返回版本信息,失败返回 NULL
4. 示例代码
注意,使用时请替换申请的 APPID SDKKEY,并设置好文件路径和图像尺寸
原型
/* 第一种:原图片格式方法 */ 
 
#include "stdafx.h" 
#include "stdlib.h" 
#include "arcsoft_fsdk_fic.h" 
#pragma comment(lib,"libarcsoft_fsdk_fic.lib") 
 
#define APPID  ""   //APPID 
#define SDKKey ""   //SDKKey 
 
int main() {  
		/* 初始化人证比对引擎*/  
		MHandle hEngine = NULL;  
		MRESULT res = ArcSoft_FIC_InitialEngine(APPID, SDKKey, &hEngine);  
		if (res != MOK)  {   
			printf("Initial Engine failed, error code: %d\n", res);   
			return -1;  
		} 
 
 		/* 读取预览静态图片信息,并保存到ASVLOFFSCREEN结构体 (以ASVL_PAF_RGB24_B8G8R8 格式为例) 图片数据为BGR原始数据 */  
		ASVLOFFSCREEN imgInfo0 = { 0 };  
		imgInfo0.i32Width = IMAGE_WIDTH;  
		imgInfo0.i32Height = IMAGE_HEIGHT;  
		imgInfo0.u32PixelArrayFormat = ASVL_PAF_RGB24_B8G8R8;  
		imgInfo0.pi32Pitch[0] = imgInfo0.i32Width * 3;  
		imgInfo0.ppu8Plane[0] = (MUInt8*)malloc(imgInfo0.i32Height*imgInfo0.pi32Pitch[0]);  
		FILE* fp1 = fopen("IMAGE_PATH", "rb");  
		if (fp1)  {   
			fread(imgInfo0.ppu8Plane[0], 
			imgInfo0.i32Height*imgInfo0.pi32Pitch[0], 1, fp1);   
			fclose(fp1);  
		} 
 
 		/* 人脸特征提取 0-静态图片 1-视频 */  
		LPAFIC_FSDK_FACERES pFaceRes=(LPAFIC_FSDK_FACERES)malloc(sizeof(AFIC_FSDK_FACERES));  
		MRESULT res = ArcSoft_FIC_FaceDataFeatureExtraction(hEngine, 0, &imgInfo0, pFaceRes);  
		if (res != MOK)  {   
			printf("Face Feature Extraction failed, error code: %d\n", res);   
			return -1;  
		}   

 		/* 读取证件照静态图片信息,并保存到ASVLOFFSCREEN结构体 (以 ASVL_PAF_RGB24_B8G8R8格式为例) 图片数据为BGR原始数据 */  
		ASVLOFFSCREEN imgInfo1 = { 0 };  
		imgInfo1.i32Width = IMAGE_WIDTH;  imgInfo1.i32Height = IMAGE_HEIGHT;  
		imgInfo1.u32PixelArrayFormat = ASVL_PAF_RGB24_B8G8R8;  
		imgInfo1.pi32Pitch[0] = imgInfo1.i32Width * 3;
		//  imgInfo1.ppu8Plane[0] = (MUInt8*)malloc(imgInfo1.i32Height*imgInfo1.pi32Pitch[0]);  
		FILE* fp2 = fopen("IMAGE_PATH", "rb");  
		if (fp2)  {   
			fread(imgInfo1.ppu8Plane[0], imgInfo1.i32Height*imgInfo1.pi32Pitch[0], 1, fp1);   
			fclose(fp2);  
		}    
		/* 证件照特征提取 */  
		MRESULT res = ArcSoft_FIC_IdCardDataFeatureExtraction(hEngine, &imgInfo1);  
		if (res != MOK)  {   
			printf("IdCard Feature Extraction failed, error code: %d\n", res);   
			return -1;  
		}    
		/* 人证比对 */  
		MFloat pSimilarScore = 0.0f;  
		MInt32 pResult = 0;  
		MFloat g_threshold = 0.82;  
		MRESULT res = ArcSoft_FIC_FaceIdCardCompare(hEngine, g_threshold, &pSimilarScore, &pResult);  
		if (res != MOK)  {   
			printf("Face IdCard Compare failed, error code: %d\n", res);   
			return -1;  
		}     
		/* 反初始化引擎 */  
		MRESULT res = ArcSoft_FIC_UninitialEngine(hEngine);  
		if (res != MOK)  {   
			printf("Uninitial Engine failed, error code: %d\n", res);
			return -1;  
		}    
		free(pFaceRes);  
		free(imgInfo0.ppu8Plane[0]);  
		free(imgInfo1.ppu8Plane[0]); 
		return 0; 
} 
 
/* 第二种:OpenCv方法 */ 
 
#include "stdafx.h" 
#include  
#include "arcsoft_fsdk_fic.h" 
#pragma comment(lib,"libarcsoft_fsdk_fic.lib") 
#pragma comment(lib,"mpbase.lib") 
 
#define APPID  ""   //APPID 
#define SDKKey ""   //SDKKey 
 
int main() {  
		IplImage* img0 = cvLoadImage("");  
		IplImage* img1 = cvLoadImage("");  
		if (img0 && img1)  {   /* 初始化人证比对引擎*/   
			MHandle hEngine = NULL;   
			MRESULT res = ArcSoft_FIC_InitialEngine(APPID, SDKKey, &hEngine);   
			if (res != MOK)   {    
				printf("Initial Engine failed, error code: %d\n", res);    
				return -1;   
			}      /* 读取预览静态图片信息,并保存到ASVLOFFSCREEN结构体 (以 ASVL_PAF_RGB24_B8G8R8格式为例) 图片数据为BGR原始数据 */   
			ASVLOFFSCREEN imgInfo0 = { 0 };   
			imgInfo0.i32Width = img0->width;   
			imgInfo0.i32Height = img0->height;   
			imgInfo0.u32PixelArrayFormat = ASVL_PAF_RGB24_B8G8R8;   
			imgInfo0.pi32Pitch[0] = imgInfo0.i32Width * 3;   
			imgInfo0.ppu8Plane[0] = (MUInt8*)img0->imageData;      /* 人脸特征提取 0-静态图片 1-视频 */   
			LPAFIC_FSDK_FACERES pFaceRes=(LPAFIC_FSDK_FACERES)malloc(sizeof(AFIC_FSDK_FACERES));   
			MRESULT res = ArcSoft_FIC_FaceDataFeatureExtraction(hEngine, 0, &imgInfo0, pFaceRes);   
			if (res != MOK)   {    
				printf("Face Feature Extraction failed, error code: %d\n", res);    
				return -1;   
			}      
			
			/* 读取证件照静态图片信息,并保存到ASVLOFFSCREEN结构体 (以 ASVL_PAF_RGB24_B8G8R8格式为例) 图片数据为BGR原始数据 */   
			
			ASVLOFFSCREEN imgInfo1 = { 0 };   
			imgInfo1.i32Width = img1->width;   
			imgInfo1.i32Height = img1->height;   
			imgInfo1.u32PixelArrayFormat = ASVL_PAF_RGB24_B8G8R8;   
			imgInfo1.pi32Pitch[0] = imgInfo1.i32Width * 3;   
			imgInfo1.ppu8Plane[0] = (MUInt8*)img1->imageData; 
		
			/* 证件照特征提取 */   
		
			MRESULT res = ArcSoft_FIC_IdCardDataFeatureExtraction(hEngine, &imgInfo1);   
			if (res != MOK) {    
				printf("IdCard Feature Extraction failed, error code: %d\n", res);    
				return -1;   
			}      
		
			/* 人证比对 */   
		
			MFloat pSimilarScore = 0.0f;   
			MInt32 pResult = 0;   
			MFloat g_threshold = 0.82;   
			MRESULT res = ArcSoft_FIC_FaceIdCardCompare(hEngine, g_threshold, &pSimilarScore, &pResult);   
			if (res != MOK)   {    
				printf("Face IdCard Compare failed, error code: %d\n", res);    
				return -1;   
			}      
		
			/* 反初始化引擎 */   
		
			MRESULT res = ArcSoft_FIC_UninitialEngine(hEngine);   
			if (res != MOK)   {    
				printf("Uninitial Engine failed, error code: %d\n", res);    
				return -1;   
			}  
		}  
		cvReleaseImage(&img0);  
		cvReleaseImage(&img1);     
		return 0; 
} 
 
5. 其他说明
该 SDK仅限于采集照与二代身份证证件照比对,不推荐使用于其他应用场景,若有定制升级 需求,请联系我们。