zoukankan      html  css  js  c++  java
  • TSINGSEE青犀视频开发AI识别对接大华AI设备以通道或者库为对象布控的流程介绍

    目前TSINGSEE青犀视频正在对不同AI设备的功能进行对接测试,本文分享一下大华AI设备以通道或者库为对象布控的流程。

    定义说明:

    以通道为对象进行布控,即一个通道可布控一个或者多个人脸库。
    以库为对象进行布控,即一个人脸库可布控一个或者多个通道。

    两种方式都为人脸库的布控。

    流程步骤

    步骤1 调用 CLIENT_Init 完成 SDK 初始化流程
    步骤2 初始化成功后,调用 CLIENT_LoginEx2 登录设备
    步骤3 选择不同人脸库的布控方式,有以库为对象进行布控,以通道为对象进行布控

    • 以库为对象布控
      选择以库为对象,调用 CLIENT_FaceRecognitionPutDisposition 对库进行布控
      业务使用完后,调用 CLIENT_FaceRecognitionDelDisposition 对库进行撤控
    • 以通道为对象布控
      选择以通道为对象,调用 CLIENT_SetGroupInfoForChannel 对通道布控

    步骤4 业务使用完后,调用 CLIENT_Logout 登出设备
    步骤5 SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源

    注意

    以通道为对象或者以库为对象布控都是人脸库布控的方式。

    以通道为对象布控时,可将多个人脸库部署到一个通道上。以库为对象布控时,可将一个人脸库部署到多个通道上。
    以通道为对象布控时,接口 CLIENT_SetGroupInfoForChannel 布控方式为覆盖方式,即总是人脸检测与人脸识别。

    以最新的布控配置为主。撤控操作为将空的配置布控下去即可。

    以库为对象撤控时,接口 CLIENT_FaceRecognitionDelDisposition 可对人脸库已经部署的部分 通道做撤防,例如:人脸库已经部署在 3 个通道上,撤控的时候可对其部署通道的其中 2 个通道撤控,剩余一个通道保持原样。

    参考代码

    // 输入参数 
    NET_IN_SET_GROUPINFO_FOR_CHANNEL stInChannelDeploy = 
    { sizeof(NET_IN_SET_GROUPINFO_FOR_CHANNEL)}; 
    stInChannelDeploy.nChannelID = 0; 
    stInChannelDeploy.nGroupIdNum = 2; // 需要在该通道配置人脸库的个数 
    strncpy(stInChannelDeploy.szGroupId[0], strGroupId1, DH_COMMON_STRING_64-1); // 对人脸库 ID 进行 拷贝 
    strncpy(stInChannelDeploy.szGroupId[1], strGroupId2, DH_COMMON_STRING_64-1); 
    stInChannelDeploy.nSimilaryNum = 2;// 相似度阈值个数,与人员组数相同 
    stInChannelDeploy.nSimilary[0] = 85; // 第一个人脸库的人脸相似度阈值 
    stInChannelDeploy.nSimilary[1] = 90; // 第二个人脸库的人脸相似度阈值 
    // 输出参数 
    NET_OUT_SET_GROUPINFO_FOR_CHANNEL stOutChannelDeploy = 
    { sizeof(NET_OUT_SET_GROUPINFO_FOR_CHANNEL)}; 
    // 以库为对象布控 
    BOOL bRet = CLIENT_SetGroupInfoForChannel(lLoginHandle, &stInChannelDeploy, &stOutChannelDeploy); 
    if (flase == bRet) 
    { 
    printf("CLIENT_SetGroupInfoForChannel: failed! Error code: %x.
    ", CLIENT_GetLastError()); 
    } 
    // 以通道为对象撤控,将空的布控信息下发 
    if (NULL != lRealHandle) 
    { 
    memset(stInChannelDeploy, 0, sizeof(NET_IN_SET_GROUPINFO_FOR_CHANNEL)); 
    memset(stOutChannelDeploy, 0, sizeof(NET_OUT_SET_GROUPINFO_FOR_CHANNEL)); 
    stInChannelDeploy.dwSize = sizeof(NET_IN_SET_GROUPINFO_FOR_CHANNEL); 
    stOutChannelDeploy.dwSize = sizeof(NET_OUT_SET_GROUPINFO_FOR_CHANNEL); 
    CLIENT_SetGroupInfoForChannel(lLoginHandle, &stInChannelDeploy, &stOutChannelDeploy); 
    }
    

     

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15162532.html
Copyright © 2011-2022 走看看