前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyCVR人脸识别框在播放器上显示及消失的机制设定

EasyCVR人脸识别框在播放器上显示及消失的机制设定

原创
作者头像
TSINGSEE青犀视频
发布2021-11-30 17:14:24
3260
发布2021-11-30 17:14:24
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

随着人脸识别技术的成熟,“刷脸”逐渐成为新时期生物识别技术应用的主要领域,为了迎合和满足现代化的市场需求,EasyCVR的人脸识别也在不断优化中,目前可通过对视频监控场景中的人、车、物等进行AI检测与抓拍识别。

在EasyCVR人脸识别中,如果识别区出现人脸即可直接识别,如果下一帧没有人脸,那么EasyCVR播放器屏幕则会显示人脸识别框,如下:

但是这个框在没有识别内容的时候出现其实是不合理的,因此我们需要把这个框去掉,且设置为只有人脸时才会出现框,没有人脸则不显示框。

在使用EasyStreamClient拉RTSP流,先初始化解码器,在获取到的I帧解码成yuv(下图操作)

下图是人脸识别和特征提取:

下图是特征提取,把特征提取到的X轴、Y轴、宽度和高度都保存在Rect的变量中。把Rect里面的值转换为SEI帧,传给前端用于绘制人脸的红色的框。

分析代码,里面有个人脸识别“int(ret.size)>0”,所以只有检测到人脸才回传给前端绘制,如果没有人脸就传递空数据给前端,才会导致只有绘制框没有取消框的操作。

此处我们需要在程序“int(ret.size)>0”加一个else操作,把一帧每有识别到的人脸给取消,再给前端,这样播放器的框会消失。

代码语言:javascript
复制
else {
   if client.Flag {
      client.Flag = false
      s := PacketSei{}
      s.Rect = make([]RectSei, int(ret.size))
      s.Rect = append(s.Rect, RectSei{
         X: 0,
         Y: 0,
         W: 0,
         H: 0,
      })
      extJson, _ := json.Marshal(s)
      base64Str := base64.StdEncoding.EncodeToString(extJson)
      //FIXME:debug code
      base64Str = string(extJson)
      GenSei(uintptr(unsafe.Pointer(&result.sei[0])), &result.seiLen, base64Str)

      v := cvrdo.Face{
         AiBase: cvrdo.AiBase{
            ID:         0,
            Name:       "",
            ParentID:   int(client.ChannelId),
            CreateTime: time.Now(),
            UpdateTime: time.Now(),
         },
      }
      v.AiBase.Name = ""
      v.Timestamp = 0
      v.ConfidenceLevel = 0
      result.face = append(result.face, v)
   }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档