完善个人信息

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

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

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

                                
成员描述
lCodebase
代码库版本号
lMajor
主版本号
lMinor
次版本号
lBuild
编译版本号,递增
Version
字符串形式的版本号
BuildDate
编译时间
CopyRight
版权信息
ASGE_FSDK_GENDERRESULT
描述: 定义性别检测结果信息
定义
typedef struct{
	MInt32 * pGenderResultArray;
	MInt32 lFaceNumber;
} ASGE_FSDK_GENDERRESULT, *LPASGE_FSDK_GENDERRESULT;
    
成员变量
pGenderResultArray
检测出的性别结果数组
lFaceNumber
检测出的性别结果个数
ASAE _FSDK_GENDERFACEINPUT
描述: 定义脸部信息
定义
Typedef struct{
	MRECT *pFaceRectArray;
	MInt32 *pFaceOrientArray;
	MInt32 lFaceNumber;
} ASGE_FSDK_GENDERFACEINPUT, *LPASGE_FSDK_GENDERFACEINPUT;
                                
ASGE_FSDK_GenderOrientCode
描述: 基于逆时针方向的人脸角度
定义
enum _AFR_FSDK_OrientCode{
    ASGE_FSDK_FOC_0      = 0x1,
    ASGE_FSDK_FOC_90     = 0x2,
    ASGE_FSDK_FOC_270    = 0x3,
    ASGE_FSDK_FOC_180    = 0x4,
    ASGE_FSDK_FOC_30     = 0x5,
    ASGE_FSDK_FOC_60     = 0x6,
    ASGE_FSDK_FOC_120    = 0x7,
    ASGE_FSDK_FOC_150    = 0x8,
    ASGE_FSDK_FOC_210    = 0x9,
    ASGE_FSDK_FOC_240    = 0xa,
    ASGE_FSDK_FOC_300    = 0xb,
    ASGE_FSDK_FOC_330    = 0xc
};
                                
成员描述
AFT_FSDK_FOC_0
0 度
AFT_FSDK_FOC_90
90度
AFT_FSDK_FOC_270
270度
AFT_FSDK_FOC_180
180度
ASGE_FSDK_FOC_60
60度
ASGE_FSDK_FOC_120
120度
ASGE_FSDK_FOC_150
150度
ASGE_FSDK_FOC_210
210度
ASGE_FSDK_FOC_240
240度
ASGE_FSDK_FOC_300
300度
ASGE_FSDK_FOC_330
330度
API说明
ASGE_FSDK_InitGenderEngine
描述: 初始化人脸识别引擎
原型
MRESULT ASGE_FSDK_InitGenderEngine(
    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 内存不足
ASGE_FSDK_GenderEstimation_StaticImage
描述: 检测静态图片中人物的性别
原型
MRESULT ASGE_FSDK_GenderEstimation_StaticImage (
	MHandle hEngine,
	LPASVLOFFSCREEN pImginfo,
	LPASGE_FSDK_GENDERFACEINPUT pFaceRes,
	LPASGE_FSDK_GENDERRESULT pGenderRes
);
                            
参数
hEngine
[in] 性别检测引擎
pImginfo
[in] 输入的图像数据
pFaceRes
[in] 输入的图像中人脸信息, 需要事先用人脸引擎检测出
pGenderRes
[out] 性别检测结果
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
ASGE_FSDK_GenderEstimation_Preview
描述: 检测动态视频中人物的性别
原型
MRESULT ASGE_FSDK_GenderEstimation_Preview(
	MHandle hEngine,
	LPASVLOFFSCREEN pImginfo,
	LPASGE_FSDK_GENDERFACEINPUT pFaceRes,
	LPASGE_FSDK_GENDERRESULT pGenderRes
);
                            
参数
hEngine
[in] 性别检测引擎
pImginfo
[in] 输入的图像数据
pFaceRes
[in] 已检测到的脸部信息
pGenderRes
[out] 性别检测结果
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
ASGE_FSDK_UninitGenderEngine
描述: 销毁引擎,释放相应资源
原型
MRESULT ASGE_FSDK_UninitGenderEngine(
    MHandle   hEngine
);
                            
参数
hEngine
[in] 性别检测引擎
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
ASGE_FSDK_GetVersion
描述: 获取SDK版本信息
原型
const ASGE_FSDK_Version *ASGE_FSDK_GetVersion(
    MHandle   hEngine
);
                            
参数
hEngine
[in] 性别检测引擎
C语言示例代码

include "ammem.h"
#include "merror.h"
#import <arcsoft_fsdk_gender_estimation/arcsoft_fsdk_gender_estimation.h>
#include <stdlib.h>
#define ARC_APP_ID ""
#define ARC_GENDER_SDK_KEY ""
#define ARC_GENDER_MAX_FACE_NUM 5
#define ARC_GENDER_MEM_SIZE 1024*1024*30
MRESULT doGenderEstimation()
{
// init
MVoid* pMemBuffer = MMemAlloc(MNull, ARC_GENDER_MEM_SIZE);
MHandle hEngine = MNull;
MRESULT mr = ASGE_FSDK_InitGenderEngine((MPChar)ARC_APP_ID, (MPChar)ARC_GENDER_SDK_KEY, (MByte*)pMemBuffer, ARC_GENDER_MEM_SIZE, &hEngine);
if (MOK != mr) {
// check the error code
}
ASGE_FSDK_GENDERFACEINPUT genderFaceInput = {0};
genderFaceInput.lFaceNumber = 0;
genderFaceInput.pFaceRectArray = (MRECT *)MMemAlloc(MNull, sizeof(MRECT)*ARC_GENDER_MAX_FACE_NUM);
genderFaceInput.pFaceOrientArray = (MInt32 *)MMemAlloc(MNull, sizeof(MInt32)*ARC_GENDER_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
genderFaceInput.lFaceNumber = 1; // set face number from face detection or face tracking result
ArcSoft, Inc.
©2017 ArcSoft, Inc. All rights reserved. 12
//genderFaceInput.pFaceRectArray // set face rect array from face detection or face tracking result
//genderFaceInput.pFaceOrientArray // set face orient array from face detection or face tracking result
ASGE_FSDK_GENDERRESULT genderResult = {0};
MBool previewData = MTrue; // do preview data or static data gender estimation
if(previewData)
mr = ASGE_FSDK_GenderEstimation_Preview(hEngine, &offScreenIn, &genderFaceInput, &genderResult);
else
mr = ASGE_FSDK_GenderEstimation_StaticImage(hEngine, &offScreenIn, &genderFaceInput, &genderResult);
// unit
if (genderFaceInput.pFaceRectArray)
{
MMemFree(MNull, genderFaceInput.pFaceRectArray);
genderFaceInput.pFaceRectArray = MNull;
}
if (genderFaceInput.pFaceOrientArray)
{
MMemFree(MNull, genderFaceInput.pFaceOrientArray);
genderFaceInput.pFaceOrientArray = MNull;
}
mr = ASGE_FSDK_UninitGenderEngine(hEngine);
if(pMemBuffer != MNull)
{
MMemFree(MNull,pMemBuffer);
pMemBuffer = MNull;
}
return mr;
}