当前位置: 首页 > news >正文

02-Media-2-ai_rtsp.py 人脸识别加网络画面RTSP推流演示

ai_rtsp.py  演示了如何通过调用 AI模型 实现人脸检测功能后,将包含检测结果的图像以 RTSP 网络流的形式输出,便于远程网络查看。

Tips:RTSP全称实时流协议(Real Time Streaming Protocol),是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。

RTSP作为一个应用层协议,提供了一个可供扩展的框架,使得流媒体的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送。

ai_rtsp程序结构:

1. 导入必要的库,包括自定义的PipeLine、AIBase、Ai2d、Utils、WBCRtsp等。

- libs.PipeLine: 图像处理流程管理,包括图像获取、显示等。

- libs.AIBase: AI基类,封装了模型加载、推理等基本操作。

- libs.AI2D: 用于图像预处理,如缩放、填充等。

- libs.Utils: 工具函数,例如计时器、对齐函数等。

- libs.WBCRtsp: 用于RTSP推流。

- os, sys, ujson, gc, math: 系统库和工具库。

- media.media: 媒体相关操作。

- nncase_runtime: nncase运行时,用于模型推理。

- ulab.numpy: 类似于numpy的库,用于数组操作。

- image: 图像处理相关。

- aidemo: 提供后处理函数,如face_det_post_process。

2. 定义FaceDetectionApp类,继承自AIBase,实现了人脸检测的初始化、预处理配置、后处理和结果绘制。

- __init__: 初始化函数,设置模型路径、输入尺寸、锚点、置信度阈值、NMS阈值等,并初始化AI2D。

- config_preprocess: 配置预处理操作,包括填充(letterbox)和缩放,使用Ai2d构建预处理流程。

- postprocess: 后处理函数,调用aidemo.face_det_post_process对模型输出进行解析,得到人脸检测框。

- draw_result: 绘制检测结果,将检测框转换到显示分辨率并绘制矩形。

3. 在主程序中,设置显示模式、图像尺寸、模型路径、参数等,初始化PipeLine和WBCRtsp(用于推流),然后创建FaceDetectionApp实例。

- 设置显示模式(hdmi或lcd等)和输入图像尺寸(rgb888p_size)。

- 设置模型路径、置信度阈值、NMS阈值、锚点数据(从文件读取)。

- 初始化PipeLine,并配置WBCRtsp推流。

- 创建FaceDetectionApp实例,并配置预处理。

- 进入主循环,获取图像帧,运行人脸检测,绘制结果并显示。

- 捕获键盘中断和其他异常,确保程序退出时释放资源。

4. 进入主循环,不断获取图像帧,进行人脸检测,绘制结果并显示。

- 设置显示模式(hdmi或lcd等)

http://www.xdnf.cn/news/1437859.html

相关文章:

  • 51单片机(单片机基础,LED,数码管)
  • Spring Boot手写10万敏感词检查程序
  • UCIE Specification详解(十三)
  • C++ 条件变量,互斥锁
  • 【c++】多态+RTTI (运行时的类型识别信息)
  • 深度学习篇---DenseNet
  • 深入解析Linux进程概念与操作系统核心
  • 深度学习篇---SGD优化器
  • 「数据获取」《安徽建设统计年鉴》(2002-2007)(2004、2006缺失)(获取方式看绑定的资源)
  • spring boot驴友结伴游网站的设计与实现(代码+数据库+LW)
  • 使用Global Watersheds提取水文站控制区域(水文站上下游 流域水系等)
  • 【自记】Python 中 简化装饰器使用的便捷写法语法糖(Syntactic Sugar)示例
  • 复刻 Python 实现的小智语音客户端项目py-xiaozhi日记
  • 【算法笔记 day six】二分算法的第三部分
  • 手写Muduo网络库核心代码1-- noncopyable、Timestamp、InetAddress、Channel 最详细讲解
  • 测试覆盖率不够高?这些技巧让你的FastAPI测试无懈可击!
  • maven【maven】技术详解
  • ARM编译器生成的AXF文件解析
  • 平衡车-ADC采集电池电压
  • 综合诊断板CAN时间戳稳定性测试报告8.28
  • Linux内核进程管理子系统有什么第四十回 —— 进程主结构详解(36)
  • 安装部署k3s
  • Java试题-选择题(29)
  • 算法题打卡力扣第3题:无重复字符的最长子串(mid)
  • Suno AI 新功能上线:照片也能唱歌啦!
  • Netty从0到1系列之NIO
  • 进程优先级(Process Priority)
  • 猫猫狐狐的“你今天有点怪怪的”侦察日记
  • CentOS7安装Nginx服务——为你的网站配置https协议和自定义服务端口
  • Java注解深度解析:从@ResponseStatus看注解奥秘