完善个人信息

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

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

 无标题文档
人脸识别Linux开发文档
4、年龄检测API
基本类型
所有基本类型在平台库中有定义。 定义规则是在ANSIC 中的基本类型前加上字母“M”同时将类型的第一个字母改成大写。例如“long” 被定义成“MLong”
数据结构与枚举
ASAE_FSDK_Version
描述: SDK版本信息
定义
typedef struct{
	MInt32 lCodebase;
	MInt32 lMajor;
	MInt32 lMinor;
	MInt32 lBuild;
	MPChar Version;
	MPChar BuildDate;
	MPChar CopyRight;
} ASAE_FSDK_Version;

                                
成员描述
lCodebase
代码库版本号
lMajor
主版本号
lMinor
次版本号
lBuild
编译版本号,递增
Version
字符串形式的版本号
BuildDate
编译时间
CopyRight
版权
ASAE_FSDK_AGERESULT
描述: 定义年龄检测结果信息
定义
typedef struct{
	MInt32 * pAgeResultArray;
	MInt32 lFaceNumber;
} ASAE_FSDK_AGERESULT, *LPASAE_FSDK_AGERESULT;
    
成员变量
pAgeResultArray
检测出的年龄结果数组
lFaceNumber
检测出的年龄结果个数
ASAE _FSDK_AGEFACEINPUT
描述: 定义脸部信息
定义
Typedef struct{
	MRECT *pFaceRectArray;
	MInt32 *pFaceOrientArray;
	MInt32 lFaceNumber;
} ASAE_FSDK_AGEFACEINPUT, *LPASAE_FSDK_AGEFACEINPUT;
                                
ASAE_FSDK_AgeOrientCode
描述: 基于逆时针的脸部方向枚举值
定义
enum _AFR_FSDK_OrientCode{
    ASAE_FSDK_FOC_0      = 0x1,
    ASAE_FSDK_FOC_90     = 0x2,
    ASAE_FSDK_FOC_270    = 0x3,
    ASAE_FSDK_FOC_180    = 0x4,
    ASAE_FSDK_FOC_30     = 0x5,
    ASAE_FSDK_FOC_60     = 0x6,
    ASAE_FSDK_FOC_120    = 0x7,
    ASAE_FSDK_FOC_150    = 0x8,
    ASAE_FSDK_FOC_210    = 0x9,
    ASAE_FSDK_FOC_240    = 0xa,
    ASAE_FSDK_FOC_300    = 0xb,
    ASAE_FSDK_FOC_330    = 0xc
};
                                
成员描述
AFT_FSDK_FOC_0
0 度
AFT_FSDK_FOC_90
90度
AFT_FSDK_FOC_270
270度
AFT_FSDK_FOC_180
180度
ASAE_FSDK_FOC_60
60度
ASAE_FSDK_FOC_120
120度
ASAE_FSDK_FOC_150
150度
ASAE_FSDK_FOC_210
210度
ASAE_FSDK_FOC_240
240度
ASAE_FSDK_FOC_300
300度
ASAE_FSDK_FOC_330
330度
API说明
ASAE_FSDK_InitAgeEngine
描述: 初始化人脸识别引擎
原型
MRESULT ASAE_FSDK_InitAgeEngine(
    MPChar   AppId,
    MPChar   SDKKey,
    MByte	*pMem,
    MLong    lMemSize,
    MHandle  *phEngine
);
                            
参数
AppId
[in] 用户申请SDK时获取的App Id
SDKKey
[in] 用户申请SDK时获取的SDK Key
pMem
[in] 分配给引擎使用的内存地址
lMemSize
[in] 分配给引擎使用的内存大小
phEngine
[out] 年龄检测引擎
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
ASAE_FSDK_AgeEstimation_StaticImage
描述: 检测静态图片中人物的年龄
原型
MRESULT ASAE_FSDK_AgeEstimation_StaticImage (
	MHandle hEngine,
	LPASVLOFFSCREEN pImginfo,
	LPASAE_FSDK_AGEFACEINPUT pFaceRes,
	LPASAE_FSDK_AGERESULT pAgeRes
);
                            
参数
hEngine
[in] 年龄检测引擎
pImginfo
[in] 输入的图像数据
pFaceRes
[in] 已检测到的脸部信息
pAgeRes
[out] 年龄检测结果
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
ASAE_FSDK_AgeEstimation_Preview
描述: 检测动态视频中人物的年龄
原型
MRESULT ASAE_FSDK_AgeEstimation_Preview(
	MHandle hEngine,
	LPASVLOFFSCREEN pImginfo,
	LPASAE_FSDK_AGEFACEINPUT pFaceRes,
	LPASAE_FSDK_AGERESULT pAgeRes
);
                            
参数
hEngine
[in] 年龄检测引擎
pImginfo
[in] 输入的图像数据
pFaceRes
[in] 已检测到的脸部信息
pAgeRes
[out] 年龄检测结果
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
ASAE_FSDK_UninitAgeEngine
描述: 销毁引擎,释放相应资源
原型
MRESULT ASAE_FSDK_UninitAgeEngine(
    MHandle   hEngine
);
                            
参数
hEngine
[in] 年龄检测引擎
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
ASAE_FSDK_GetVersion
描述: 获取SDK版本信息
原型
const ASAE_FSDK_Version *ASAE_FSDK_GetVersion(
    MHandle   hEngine
);
                            
参数
hEngine
[in] 年龄检测引擎
C语言示例代码

#include "ammem.h"
#include "merror.h"
#import <arcsoft_fsdk_age_estimation/arcsoft_fsdk_age_estimation.h>
#include <stdlib.h>
#define ARC_APP_ID ""
#define ARC_AGE_SDK_KEY ""
#define ARC_AGE_MAX_FACE_NUM 5
#define ARC_AGE_MEM_SIZE 1024*1024*30
MRESULT doAgeEstimation()
{
// init
MVoid* pMemBuffer = MMemAlloc(MNull, ARC_AGE_MEM_SIZE);
MHandle hEngine = MNull;
MRESULT mr = ASAE_FSDK_InitAgeEngine((MPChar)ARC_APP_ID, (MPChar)ARC_AGE_SDK_KEY, (MByte*)pMemBuffer, ARC_AGE_MEM_SIZE, &hEngine);
if (MOK != mr) {
// check the error code
}
ASAE_FSDK_AGEFACEINPUT ageFaceInput = {0};
ageFaceInput.lFaceNumber = 0;
ageFaceInput.pFaceRectArray = (MRECT *)MMemAlloc(MNull, sizeof(MRECT)*ARC_AGE_MAX_FACE_NUM);
ageFaceInput.pFaceOrientArray = (MInt32 *)MMemAlloc(MNull, sizeof(MInt32)*ARC_AGE_MAX_FACE_NUM);
// estimation
ASVLOFFSCREEN offScreenIn = {0}; // image data, replaced with your data
offScreenIn.u32PixelArrayFormat = ASVL_PAF_NV12; // image format
offScreenIn.i32Width = 1280; // image width
offScreenIn.i32Height = 720; // image height
offScreenIn.pi32Pitch[0] = offScreenIn.i32Width; // pitch of plane 0, may not be equal to width
offScreenIn.pi32Pitch[1] = offScreenIn.i32Width; // pitch of plane 1, may not be equal to width
offScreenIn.ppu8Plane[0] = MNull; // data address of plane 0
offScreenIn.ppu8Plane[1] = MNull; // data address of plane 1
ageFaceInput.lFaceNumber = 1; // set face number from face detection or face tracking result
ArcSoft, Inc.
©2017 ArcSoft, Inc. All rights reserved. 12
//ageFaceInput.pFaceRectArray // set face rect array from face detection or face tracking result
//ageFaceInput.pFaceOrientArray // set face orient array from face detection or face tracking result
ASAE_FSDK_AGERESULT ageResult = {0};
MBool previewData = MTrue; // do preview data or static data age estimation
if(previewData)
mr = ASAE_FSDK_AgeEstimation_Preview(hEngine, &offScreenIn, &ageFaceInput, &ageResult);
else
mr = ASAE_FSDK_AgeEstimation_StaticImage(hEngine, &offScreenIn, &ageFaceInput, &ageResult);
// unit
if (ageFaceInput.pFaceRectArray)
{
MMemFree(MNull, ageFaceInput.pFaceRectArray);
ageFaceInput.pFaceRectArray = MNull;
}
if (ageFaceInput.pFaceOrientArray)
{
MMemFree(MNull, ageFaceInput.pFaceOrientArray);
ageFaceInput.pFaceOrientArray = MNull;
}
mr = ASAE_FSDK_UninitAgeEngine(hEngine);
if(pMemBuffer != MNull)
{
MMemFree(MNull,pMemBuffer);
pMemBuffer = MNull;
}
return mr;
}