完善个人信息

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

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

 无标题文档

ArcSoft ArcFace SDK Windows平台 API文档 V2.0~2.1

1 数据结构

1.1 ASF_VERSION

功能描述:

版本信息;

定义:

typedef struct {
	MPChar Version;					// 版本号
	MPChar BuildDate;				// 构建日期
	MPChar CopyRight;				// 版权说明
}ASF_VERSION;

1.2 ASF_SingleFaceInfo

类描述:

单人脸信息;

定义:

typedef struct {
	MRECT		faceRect;		// 人脸框
	MInt32		faceOrient;		//人脸角度
} ASF_SingleFaceInfo, *LPASF_SingleFaceInfo;

1.3 ASF_MultiFaceInfo

类描述:

多人脸信息;

定义:

typedef struct {
	MRECT* 		 faceRect;			// 人脸框数组
	MInt32*		 faceOrient;		// 人脸角度数组
	MInt32		 faceNum;			// 检测到的人脸个数
}ASF_MultiFaceInfo, *LPASF_MultiFaceInfo;

1.4 ASF_FaceFeature

功能描述:

人脸特征;

定义:

typedef struct {
	MByte*		feature;		// 人脸特征
	MInt32		featureSize;	// 人脸特征长度	
}ASF_FaceFeature, *LPASF_FaceFeature;

1.5 ASF_AgeInfo

功能描述:

年龄信息;

定义:

typedef struct{
	MInt32*	ageArray;	// 0代表未知,大于0的数值即检测的年龄结果
	MInt32	num;		// 检测的人脸个数
}ASF_AgeInfo, *LPASF_AgeInfo;

1.6 ASF_GenderInfo

功能描述:

性别信息;

定义:

typedef struct{
	MInt32*	genderArray;	// 0表示男性,1表示女性,-1表示未知
	MInt32	num;			// 检测的人脸个数	
}ASF_GenderInfo, *LPASF_GenderInfo;

1.7 ASF_Face3DAngle

功能描述:

3D角度信息;

定义:

typedef struct{
	MFloat* roll;			//横滚角
	MFloat* yaw; 			//偏航角
	MFloat* pitch; 			//俯仰角
	MInt32* status;			//0: 正常,其他数值:出错
	MInt32 num;				//检测的人脸个数
}ASF_Face3DAngle, *LPASF_Face3DAngle;

1.8 ASF_LivenessInfo

功能描述:

活体信息;

定义:

typedef struct{
		MInt32*	isLive;			// [out] 判断是否真人, 0:非真人;
								//						1:真人;
								//						-1:不确定; 
								//						-2:传入人脸数>1
		MInt32 num;
}ASF_LivenessInfo, *LPASF_LivenessInfo;

2. 接口

2.1 接口说明

2.1.1 ASFActivation

原型

MRESULT ASFActivation(
	MPChar		AppId,
	MPChar		SDKKey
);

功能描述

激活SDK。

参数 出/入参 说明
AppId [in] 官网获取的APPID
SDKKey [in] 官网获取的SDKKEY

返回值

成功返回MOK或MERR_ASF_ALREADY_ACTIVATED,否则返回失败codes。

2.1.2 ASFInitEngine

原型

MRESULT ASFInitEngine(
MLong					detectMode,	
ASF_OrientPriority		detectFaceOrientPriority,
MInt32				detectFaceScaleVal,
	MInt32					detectFaceMaxNum,
	MInt32					combinedMask,
	MHandle*				hEngine
);

功能描述

初始化引擎。

参数 出/入参 说明
detectMode [in] VIDEO模式/IMAGE模式VIDEO模式:处理连续帧的图像数据,并返回检测结果,需要将所有图像帧的数据都传入接口进行处理;IMAGE模式:处理单帧的图像数据,并返回检测结果
detectFaceOrientPriority [in] 检测脸部的角度优先值,推荐仅检测单一角度,效果更优
detectFaceScaleVal [in] 用于数值化表示的最小人脸尺寸,该尺寸代表人脸尺寸相对于图片长边的占比。video 模式有效值范围[2,16], Image 模式有效值范围[2,32]推荐值为 16
detectFaceMaxNum [in] 最大需要检测的人脸个数[1-50]
combinedMask [in] 用户选择需要检测的功能组合,可单个或多个
hEngine [out] 初始化返回的引擎handle

返回值

成功返回MOK,否则返回失败codes。

2.1.3 ASFDetectFaces

原型

MRESULT ASFDetectFaces(
	MHandle					hEngine,
	MInt32					width,
	MInt32					height,
	MInt32					format,
	MUInt8*					imgData,
	LPASF_MultiFaceInfo		detectedFaces 
);

功能描述

人脸检测。

参数 出/入参 说明
hEngine [in] 引擎handle
width [in] 图片宽度为4的倍数且大于0
height [in] YUYV/I420/NV21/NV12格式的图片高度为2的倍数,BGR24格式的图片高度不限制
format [in] 颜色空间格式
imgData [in] 图片数据
detectedFaces [out] 检测到的人脸信息

返回值

成功返回MOK,否则返回失败codes。

2.1.4 ASFFaceFeatureExtract

原型

MRESULT ASFFaceFeatureExtract(
	MHandle					hEngine,
	MInt32					width,
	MInt32					height,
	MInt32					format,
	MUInt8*					imgData,
	LPASF_SingleFaceInfo	faceInfo,
	LPASF_FaceFeature		feature
);

功能描述

单人脸特征提取。

参数 出/入参 说明
hEngine [in] 引擎handle
width [in] 图片宽度为4的倍数且大于0
height [in] YUYV/I420/NV21/NV12格式的图片高度为2的倍数,BGR24格式的图片高度不限制
format [in] 颜色空间格式
imgData [in] 图片数据
faceInfo [in] 单张人脸位置和角度信息
feature [out] 人脸特征

返回值

成功返回MOK,否则返回失败codes。

###2.1.5 ASFFaceFeatureCompare 原型

MRESULT ASFFaceFeatureCompare(
	MHandle					hEngine,
	LPASF_FaceFeature		feature1,
	LPASF_FaceFeature		feature2,
	MFloat*					confidenceLevel
);

功能描述

人脸特征比对。

参数 出/入参 说明
hEngine [in] 引擎handle
feature1 [in] 待比对的人脸特征
feature2 [in] 待比对的人脸特征
confidenceLevel [out] 比对结果,置信度数值

返回值

成功返回MOK,否则返回失败codes。

2.1.6 ASFProcess

原型

MRESULT ASFProcess(
	MHandle					hEngine,
	MInt32					width,
	MInt32					height,
	MInt32					format,
	MUInt8*					imgData,
	LPASF_MultiFaceInfo		detectedFaces, 
	MInt32					combinedMask
);

功能描述

人脸信息检测(年龄/性别/人脸3D角度/活体),最多支持4张人脸信息检测,超过部分返回未知(活体仅支持单张人脸检测,超出返回未知)。

参数 出/入参 说明
hEngine [in] 引擎handle
width [in] 图片宽度为4的倍数且大于0
height [in] YUYV/I420/NV21/NV12格式的图片高度为2的倍数,BGR24格式的图片高度不限制
format [in] 颜色空间格式
imgData [in] 图片数据
detectedFaces [in] 检测到的人脸信息
combinedMask [in] 初始化中参数combinedMask与ASF_AGE、 ASF_GENDER、 ASF_FACE3DANGLE、 ASF_LIVENESS的交集的子集

返回值

成功返回MOK,否则返回失败codes。

2.1.7 ASFGetAge

原型

MRESULT ASFGetAge(
	MHandle 			hEngine,
	LPASF_AgeInfo 		ageInfo
);

功能描述

获取年龄信息。

参数 出/入参 说明
hEngine [in] 引擎handle
ageInfo [out] 检测到的年龄信息

返回值

成功返回MOK,否则返回失败codes。

2.1.8 ASFGetGender

原型

MRESULT ASFGetGender(
	MHandle 				hEngine,
	LPASF_GenderInfo 		genderInfo
);

功能描述

获取性别信息。

参数 出/入参 说明
hEngine [in] 引擎handle
genderInfo [out] 检测到的性别信息

返回值

成功返回MOK,否则返回失败codes。

2.1.9 ASFGetFace3DAngle

原型

MRESULT ASFGetFace3DAngle(
	MHandle 				hEngine,
	LPASF_Face3DAngle 		p3DAngleInfo
);

功能描述

获取3D角度信息。

参数 出/入参 说明
hEngine [in] 引擎handle
p3DAngleInfo [out] 检测到脸部3D 角度信息

返回值

成功返回MOK,否则返回失败codes。

2.1.10 ASFGetLivenessScore

原型

MRESULT ASFGetLivenessScore(
	MHandle hEngine,
	LPASF_LivenessInfo livenessInfo	
);

功能描述

获取活体信息。

参数 出/入参 说明
hEngine [in] 引擎handle
livenessInfo [out] 检测到的活体信息

返回值

成功返回MOK,否则返回失败codes。

2.1.11 ASFGetVersion

原型

const ASF_VERSION* ASFGetVersion(
	MHandle 	hEngine
);

功能描述

获取版本信息。

参数 出/入参 说明
hEngine [in] 引擎handle

返回值

成功返回版本信息,否则返回MNull。

2.1.12 ASFUninitEngine

原型

MRESULT ASFUninitEngine(
	MHandle hEngine
);

功能描述

销毁引擎。

参数 出/入参 说明
hEngine [in] 引擎handle

返回值

成功返回MOK,否则返回失败codes。

2.2 错误码概览

错误码名 十六进制 十进制 错误码说明
MOK 0 0 成功
MERR_UNKNOWN 1 1 错误原因不明
MERR_INVALID_PARAM 2 2 无效的参数
MERR_UNSUPPORTED 3 3 引擎不支持
MERR_NO_MEMORY 4 4 内存不足
MERR_BAD_STATE 5 5 状态错误
MERR_USER_CANCEL 6 6 用户取消相关操作
MERR_EXPIRED 7 7 操作时间过期
MERR_USER_PAUSE 8 8 用户暂停操作
MERR_BUFFER_OVERFLOW 9 9 缓冲上溢
MERR_BUFFER_UNDERFLOW A 10 缓冲下溢
MERR_NO_DISKSPACE B 11 存贮空间不足
MERR_COMPONENT_NOT_EXIST C 12 组件不存在
MERR_GLOBAL_DATA_NOT_EXIST D 13 全局数据不存在
MERR_FSDK_INVALID_APP_ID 7001 28673 无效的AppId
MERR_FSDK_INVALID_SDK_ID 7002 28674 无效的SDKkey
MERR_FSDK_INVALID_ID_PAIR 7003 28675 AppId和SDKKey不匹配
MERR_FSDK_MISMATCH_ID_AND_SDK 7004 28676 SDKKey和使用的SDK不匹配
MERR_FSDK_SYSTEM_VERSION_UNSUPPORTED 7005 28677 系统版本不被当前SDK所支持
MERR_FSDK_LICENCE_EXPIRED 7006 28678 SDK有效期过期,需要重新下载更新
MERR_FSDK_FR_INVALID_MEMORY_INFO 12001 73729 无效的输入内存
MERR_FSDK_FR_INVALID_IMAGE_INFO 12002 73730 无效的输入图像参数
MERR_FSDK_FR_INVALID_FACE_INFO 12003 73731 无效的脸部信息
MERR_FSDK_FR_NO_GPU_AVAILABLE 12004 73732 当前设备无GPU可用
MERR_FSDK_FR_MISMATCHED_FEATURE_LEVEL 12005 73733 待比较的两个人脸特征的版本不一致
MERR_FSDK_FACEFEATURE_UNKNOWN 14001 81921 人脸特征检测错误未知
MERR_FSDK_FACEFEATURE_MEMORY 14002 81922 人脸特征检测内存错误
MERR_FSDK_FACEFEATURE_INVALID_FORMAT 14003 81923 人脸特征检测格式错误
MERR_FSDK_FACEFEATURE_INVALID_PARAM 14004 81924 人脸特征检测参数错误
MERR_FSDK_FACEFEATURE_LOW_CONFIDENCE_LEVEL 14005 81925 人脸特征检测结果置信度低
MERR_ASF_EX_FEATURE_UNSUPPORTED_ON_INIT 15001 86017 Engine不支持的检测属性
MERR_ASF_EX_FEATURE_UNINITED 15002 86018 需要检测是属性未初始化
MERR_ASF_EX_FEATURE_UNPROCESSED 15003 86019 待获取的属性未在process中处理过
MERR_ASF_EX_FEATURE_UNSUPPORTED_ON_PROCESS 15004 86020 PROCESS不支持的检测属性,例如FR,有自己独立的处理函数
MERR_ASF_EX_INVALID_IMAGE_INFO 15005 86021 无效的输入图像
MERR_ASF_EX_INVALID_FACE_INFO 15006 86022 无效的脸部信息
MERR_ASF_ACTIVATION_FAIL 16001 90113 SDK激活失败,请打开读写权限
MERR_ASF_ALREADY_ACTIVATED 16002 90114 SDK已激活
MERR_ASF_NOT_ACTIVATED 16003 90115 SDK未激活
MERR_ASF_SCALE_NOT_SUPPORT 16004 90116 detectFaceScaleVal不支持
MERR_ASF_VERION_MISMATCH 16005 90117 SDK版本不匹配
MERR_ASF_DEVICE_MISMATCH 16006 90118 设备不匹配
MERR_ASF_UNIQUE_IDENTIFIER_MISMATCH 16007 90119 唯一标识不匹配
MERR_ASF_PARAM_NULL 16008 90120 参数为空
MERR_ASF_LIVENESS_EXPIRED 16009 90121 活体检测功能已过期
MERR_ASF_VERSION_NOT_SUPPORT 1600A 90122 版本不支持
MERR_ASF_SIGN_ERROR 1600B 90123 签名错误
MERR_ASF_DATABASE_ERROR 1600C 90124 数据库插入错误
MERR_ASF_UNIQUE_CHECKOUT_FAIL 1600D 90125 唯一标识符校验失败
MERR_ASF_COLOR_SPACE_NOT_SUPPORT 1600E 90126 颜色空间不支持
MERR_ASF_IMAGE_WIDTH_HEIGHT_NOT_SUPPORT 1600F 90127 图片宽度或高度不支持
MERR_ASF_READ_PHONE_STATE_DENIED 16010 90128 android.permission.READ_PHONE_STATE权限被拒绝
MERR_ASF_ACTIVATION_DATA_DESTROYED 16011 90129 激活数据被破坏,请删除激活文件,重新进行激活
MERR_ASF_SERVER_UNKNOWN_ERROR 16012 90130 服务端未知错误
MERR_ASF_INTERNET_DENIED 16013 90131 INTERNET权限被拒绝
MERR_ASF_ACTIVEFILE_SDK_MISMATCH 16014 90132 激活文件与SDK版本不匹配,请重新激活
MERR_ASF_DEVICEINFO_LESS 16015 90133 设备信息太少,不足以生成设备指纹
MERR_ASF_REQUEST_TIMEOUT 16016 90134 客户端时间与服务器时间(即北京时间)前后相差在30分钟之内
MERR_ASF_APPID_DATA_DECRYPT 16017 90135 服务端解密失败
MERR_ASF_APPID_APPKEY_SDK_MISMATCH 16018 90136 传入的AppId和AppKey与使用的SDK版本不一致
MERR_ASF_NO_REQUEST 16019 90137 短时间大量请求会被禁止请求,30分钟之后会解封
MERR_ASF_NETWORK_COULDNT_RESOLVE_HOST 17001 94209 无法解析主机地址
MERR_ASF_NETWORK_COULDNT_CONNECT_SERVER 17002 94210 无法连接服务器
MERR_ASF_NETWORK_CONNECT_TIMEOUT 17003 94211 网络连接超时
MERR_ASF_NETWORK_UNKNOWN_ERROR 17004 94212 网络未知错误
MERR_ASF_ACTIVEKEY_COULDNT_CONNECT_SERVER 18001 98305 无法连接激活码服务器
MERR_ASF_ACTIVEKEY_SERVER_SYSTEM_ERROR 18002 98306 服务器系统错误
MERR_ASF_ACTIVEKEY_POST_PARM_ERROR 18003 98307 请求参数错误
MERR_ASF_ACTIVEKEY_PARM_MISMATCH 18004 98308 激活码正确,且未被使用,但和传入的APPID及APPKEY不匹配
MERR_ASF_ACTIVEKEY_ACTIVEKEY_ACTIVATED 18005 98309 传入的KEY值虽然正确,但此KEY已经被激活
MERR_ASF_ACTIVEKEY_ACTIVEKEY_FORMAT_ERROR 18006 98310 KEY格式不对,一般来说是KEY错误或者未传入KEY值
MERR_ASF_ACTIVEKEY_APPID_PARM_MISMATCH 18007 98311 激活码正确,被使用,但传入的APPID不匹配
MERR_ASF_ACTIVEKEY_PAYSDK_FREEFILE_MISMATCH 18008 98312 付费版sdk不能使用免费版本的激活文件

2.3 示例代码

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "arcsoft_face_sdk.h"
#include "amcomdef.h"
#include "asvloffscreen.h"
#include "merror.h"
#include <direct.h>
#include <iostream>
#include <stdarg.h>
#include <string>
#include <opencv2\opencv.hpp>

using namespace std;
#pragma comment(lib, "libarcsoft_face_engine.lib")

#define APPID "官网下载APPID"
#define SDKKey "官网下载ADKKey"

#define SafeFree(p) { if ((p)) free(p); (p) = NULL; }
#define SafeArrayDelete(p) { if ((p)) delete [] (p); (p) = NULL; }
#define SafeDelete(p) { if ((p)) delete (p); (p) = NULL; }

//裁剪图片
void CutIplImage(IplImage* src, IplImage* dst, int x, int y)
{
	CvSize size = cvSize(dst->width, dst->height);//区域大小
	cvSetImageROI(src, cvRect(x, y, size.width, size.height));//设置源图像ROI
	cvCopy(src, dst); //复制图像
	cvResetImageROI(src);//源图像用完后,清空ROI
}

int main()
{
	//激活接口
	MRESULT res = ASFActivation(APPID, SDKKey);
	if (MOK != res && MERR_ASF_ALREADY_ACTIVATED != res)
		printf("ASFActivation fail: %d\n", res);
	else
		printf("ASFActivation sucess: %d\n", res);

	//初始化接口
	MHandle handle = NULL;
	MInt32 mask = ASF_FACE_DETECT | ASF_FACERECOGNITION | ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE | ASF_LIVENESS;
	res = ASFInitEngine(ASF_DETECT_MODE_IMAGE, ASF_OP_0_ONLY, 16, 10, mask, &handle);
	if (res != MOK)
		printf("ASFInitEngine fail: %d\n", res);
	else
		printf("ASFInitEngine sucess: %d\n", res);

	// 人脸检测
	IplImage* img0 = cvLoadImage("图片路径");
	IplImage* img1 = cvLoadImage("图片路径");

	if (img0 && img1)
	{
		ASF_MultiFaceInfo detectedFaces1 = { 0 };
		ASF_SingleFaceInfo SingleDetectedFaces1 = { 0 };
		ASF_FaceFeature feature1 = { 0 };
		ASF_FaceFeature copyfeature1 = { 0 };
		IplImage* cutImg0 = cvCreateImage(cvSize(img0->width - img0->width % 4, img0->height), IPL_DEPTH_8U, img0->nChannels);
		CutIplImage(img0, cutImg0, 0, 0);
		res = ASFDetectFaces(handle, cutImg0->width, cutImg0->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg0->imageData, &detectedFaces1);
		if (MOK == res)
		{
			SingleDetectedFaces1.faceRect.left = detectedFaces1.faceRect[0].left;
			SingleDetectedFaces1.faceRect.top = detectedFaces1.faceRect[0].top;
			SingleDetectedFaces1.faceRect.right = detectedFaces1.faceRect[0].right;
			SingleDetectedFaces1.faceRect.bottom = detectedFaces1.faceRect[0].bottom;
			SingleDetectedFaces1.faceOrient = detectedFaces1.faceOrient[0];

			res = ASFFaceFeatureExtract(handle, cutImg0->width, cutImg0->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg0->imageData, &SingleDetectedFaces1, &feature1);
			if (res == MOK)
			{
				//拷贝feature
				copyfeature1.featureSize = feature1.featureSize;
				copyfeature1.feature = (MByte *)malloc(feature1.featureSize);
				memset(copyfeature1.feature, 0, feature1.featureSize);
				memcpy(copyfeature1.feature, feature1.feature, feature1.featureSize);
			}
			else
				printf("ASFFaceFeatureExtract 1 fail: %d\n", res);
		}
		else
			printf("ASFDetectFaces 1 fail: %d\n", res);



		//第二张人脸提取特征
		ASF_MultiFaceInfo	detectedFaces2 = { 0 };
		ASF_SingleFaceInfo SingleDetectedFaces2 = { 0 };
		ASF_FaceFeature feature2 = { 0 };
		IplImage* cutImg1 = cvCreateImage(cvSize(img1->width - img1->width % 4, img1->height), IPL_DEPTH_8U, img1->nChannels);
		CutIplImage(img1, cutImg1, 0, 0);
		res = ASFDetectFaces(handle, cutImg1->width, cutImg1->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg1->imageData, &detectedFaces2);
		if (MOK == res)
		{
			SingleDetectedFaces2.faceRect.left = detectedFaces2.faceRect[0].left;
			SingleDetectedFaces2.faceRect.top = detectedFaces2.faceRect[0].top;
			SingleDetectedFaces2.faceRect.right = detectedFaces2.faceRect[0].right;
			SingleDetectedFaces2.faceRect.bottom = detectedFaces2.faceRect[0].bottom;
			SingleDetectedFaces2.faceOrient = detectedFaces2.faceOrient[0];

			res = ASFFaceFeatureExtract(handle, cutImg1->width, cutImg1->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg1->imageData, &SingleDetectedFaces2, &feature2);
			if (MOK != res)
				printf("ASFFaceFeatureExtract 2 fail: %d\n", res);
		}
		else
			printf("ASFDetectFaces 2 fail: %d\n", res);


		// 单人脸特征比对
		MFloat confidenceLevel;
		res = ASFFaceFeatureCompare(handle, &copyfeature1, &feature2, &confidenceLevel);
		if (res != MOK)
			printf("ASFFaceFeatureCompare fail: %d\n", res);
		else
			printf("ASFFaceFeatureCompare sucess: %lf\n", confidenceLevel);

		// 人脸信息检测
		MInt32 processMask = ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE | ASF_LIVENESS;
		res = ASFProcess(handle, cutImg1->width, cutImg1->height, ASVL_PAF_RGB24_B8G8R8, (MUInt8*)cutImg1->imageData, &detectedFaces1, processMask);
		if (res != MOK)
			printf("ASFProcess fail: %d\n", res);
		else
			printf("ASFProcess sucess: %d\n", res);

		// 获取年龄
		ASF_AgeInfo ageInfo = { 0 };
		res = ASFGetAge(handle, &ageInfo);
		if (res != MOK)
			printf("ASFGetAge fail: %d\n", res);
		else
			printf("ASFGetAge sucess: %d\n", res);

		// 获取性别
		ASF_GenderInfo genderInfo = { 0 };
		res = ASFGetGender(handle, &genderInfo);
		if (res != MOK)
			printf("ASFGetGender fail: %d\n", res);
		else
			printf("ASFGetGender sucess: %d\n", res);

		// 获取3D角度
		ASF_Face3DAngle angleInfo = { 0 };
		res = ASFGetFace3DAngle(handle, &angleInfo);
		if (res != MOK)
			printf("ASFGetFace3DAngle fail: %d\n", res);
		else
			printf("ASFGetFace3DAngle sucess: %d\n", res);

		//获取活体信息
		ASF_LivenessInfo livenessInfo = { 0 };
		res = ASFGetLivenessScore(handle, &livenessInfo);
		if (res != MOK)
			printf("ASFGetLivenessScore fail: %d\n", res);
		else
			printf("ASFGetLivenessScore sucess: %d\n", livenessInfo.isLive[0]);

		SafeFree(copyfeature1.feature);		//释放内存
		cvReleaseImage(&cutImg0);
		cvReleaseImage(&cutImg1);
	}
	cvReleaseImage(&img0);
	cvReleaseImage(&img1);
	//获取版本信息
	const ASF_VERSION* pVersionInfo = ASFGetVersion(handle);

	//反初始化
	res = ASFUninitEngine(handle);
	if (res != MOK)
		printf("ALUninitEngine fail: %d\n", res);
	else
		printf("ALUninitEngine sucess: %d\n", res);

	getchar();
	return 0;
}