TSINGSEE青犀视频开发大华sdk以图搜图功能简介

时间:2021-10-09
本文章向大家介绍TSINGSEE青犀视频开发大华sdk以图搜图功能简介,主要包括TSINGSEE青犀视频开发大华sdk以图搜图功能简介使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

大家知道我们最近一直在开发EasyCVR的智能识别功能,为了能够将不同的格式及SDK都与我们EasyCVR进行适配,我们也开始对此进行了研究。本文主要是分享一下我们在开发智能识别功能时,涉及到大华SDK以图搜图功能的简介。

该功能的实现主要是先从外部导入一张图片和相似度值,IVSS、NVR等设备通过这张图检索历史库或人脸库是否已经存在匹配的人脸,并返回在相似度之上的图片结果。

下面简述下调用过程:

1、调用 CLIENT_Init 完成 SDK 初始化流程。
2、初始化成功后,调用 CLIENT_LoginEx2 登录设备。
3、调用 CLIENT_StartFindFaceRecognition 设置人脸查询条件。
4、查看以上步骤中的返回值,若接口出参结构体中 nTotalCount 返回的是-1,需要等待设备查询完成。
5、调用 CLIENT_AttachFaceFindState 订阅人脸查询状态。然后等待进度回调函数中的返回进度为 100 时即搜索完成。搜索完成后调用 CLIENT_DetachFaceFindState 取消订阅查询进度。
6、调用 CLIENT_DoFindFaceRecognition 接口获取查询结果。
7、调用 CLIENT_StopFindFaceRecognition 接口结束查询。
8、业务使用完后,调用 CLIENT_Logout 登出设备。
9、SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源。

代码示例:

// 查询进度回调函数 
void CALLBACK FaceFindState(LLONG lLoginID, LLONG lAttachHandle, NET_CB_FACE_FIND_STATE* 
pstStates, int nStateNum, LDWORD dwUser) 
{ 
if (pstStates->nProgress== 100) //表示查询进度 100% 
{ 
// 停止人脸查询进度的订阅 
CLIENT_DetachFaceFindState(lAttachHandle); 
// 开始查询 
DoFind(); 
} 
return; 
} 
// 配置查询条件 
NET_IN_STARTFIND_FACERECONGNITION stuInParam = { sizeof(stuInParam) }; 
NET_OUT_STARTFIND_FACERECONGNITION stuOutParam = { sizeof(stuOutParam) }; 
stuInParam.stFilterInfo.dwSize = sizeof(stuInParam.stFilterInfo); 
stuInParam.stMatchOptions.dwSize = sizeof(stuInParam.stMatchOptions); 
stuInParam.bPersonExEnable = TRUE; 
stuInParam.nChannelID = 0; 
stuInParam.stMatchOptions.nSimilarity = 80; 
stuInParam.stFilterInfo.stStartTime = startTime; 
stuInParam.stFilterInfo.stEndTime = endTime; 
stuInParam.nBufferLen = nPicBufLen; 
stuInParam.pBuffer = strPicBuf; // 图片 Buffer 
stuInParam.stPersonInfoEx.wFacePicNum = 1; 
stuInParam.stPersonInfoEx.szFacePicInfo[0].dwOffSet = 0; 
stuInParam.stPersonInfoEx.szFacePicInfo[0].dwFileLenth = nLength; 
BOOL bRet = CLIENT_StartFindFaceRecognition(m_lLoginId, &stuInParam, &stuOutParam, 5000); 
if (!bRet) 
{ 
printf("CLIENT_StartFindFaceRecognition: failed! Error code %x.\n", CLIENT_GetLastError()); 
return -1; 
} 
m_lFindHandle = stuOutParam.lFindHandle; 

原文地址:https://www.cnblogs.com/TSINGSEE/p/15384850.html