瑞芯微(EASY EAI)RV1126B 多路网络摄像头AI分析方案

描述

1. 方案简介

方案接线示意图

 

RV1126B

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh 2204

RV1126B

2.2 源码下载以及例程编译

在EASY-EAI编译环境下创建存放源码仓库的管理目录:

cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit

通过git工具,在管理目录内克隆远程仓库

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git

RV1126B

注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer ./build.sh cpres

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

* 若build.sh脚本带有cpres参数,则会把Release/目录下的所有资源都拷贝到开发板上。

RV1126B

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata/Solu/rtspMulitPlayer

RV1126B

运行例程命令,后台打印如下所示。

./rtspMulitPlayer

RV1126B

屏幕显示内容如下所示:

RV1126B

若屏幕显示【无视频信号】,请到src/main.cpp确认:

RV1126B

屏幕显示逻辑:

RV1126B

若要调整显示轮询时间,请到src/analyzer/analyzer.cpp中的imgDisplay_thread(...)修改:

RV1126B

3. 设计说明

本开发实例由四大逻辑模块组成,分别是:启动逻辑、取流解码逻辑、算法分析逻辑、显示逻辑。

3.1 逻辑框图

RV1126B

线程资源分布:

* 取流解码逻辑xN

* 算法分析逻辑x1

* 显示逻辑x1

* 总线程数=N+1+1

3.2 代码组成

本开发实例相关的所有代码,均位于EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/中。其中:

启动逻辑位于:EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/main.cpp

取流解码逻辑位于:EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/capturer/

算法分析逻辑位于:EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/analyzer/

显示逻辑位于:EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/analyzer/

RV1126B

3.3 调用关系

RV1126B

3.4 开发建议

用户想要做算法识别,建议【仅修改】以下【两个文件】

EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/analyzer/algoProcess.cpp

EASY-EAI-Toolkit-1126B/Solutions/rtspMulitPlayer/src/analyzer/algoProcess.h

代码中注释了一个【人员识别】的样例:①把注释放开。②把【对应模型】放到与本开发实例的【可执行文件】所在的【开发板目录】。即可实现人员识别功能。

效果如下所示:

RV1126B

模型的下载,以及单步的demo使用参考,可阅读《EASY-EAI-Toolkit/算法组件/人员检测》

想要接入其它算法,可用同样方法参考其它的算法组件的使用文档。

4. 开发指南

4.1 Toolkit仓库介绍

RV1126B

4.2 示例文件&目录结构

4.2.1 开发实例介绍

每个开发实例就是一个独立的项目,项目使用cmake构建自动编译部署。一个最简单的项目至少要包含以下元素:build.sh、CMakeLists.txt、main.c,如下所示。

RV1126B

具体介绍如下所示。

RV1126B

4.2.2 可拓展的目录

可拓展的目录是指:开发过程中增加某些功能模块,功能代码。增加模式分为两种:

l 增加已编译的第三方库,在include、libs目录内添加头文件和库文件;

l 增加用户自定义的功能模块,推荐在src目录内增加;

具体情况如下所示,第三方模块相关的文件由include/3rd_model/xxx.h、libs/3rd_model/xxx.a。自定义的功能模块为src/mySrcCode、src/mySrcCode2。

RV1126B

4.3 CMakeLists.txt文件解析

4.3.1 编译环境配置部分:

第一部分为配置部分,配置部分如下所示。(获取当前方案目录、配置工具链、提取方案名称)

RV1126B

配置信息如下所示。

RV1126B

4.3.2 easyeai-api配置部分

第二部分是引入我司的功能组件库(针对当前方案进行:配置EASY EAI API头文件目录${XXX_INCLUDE_DIRS}、源码文件目录${XXX_SOURCE_DIRS}以及所依赖的库参数${XXX_LIBS}):

RV1126BRV1126B

4.3.3 第三方库配置部分

第三部分配置第三方的库(针对当前方案进行:配置第三方头文件目录、库文件目录、配置第三方库链接参数以及配置源码目录):

RV1126B

配置信息如下所示。

RV1126B

例如添加个人库的目录组成方式如下所示。

RV1126B

aux_source_directory的修改方式为:

aux_source_directory(./src ./src/mySrcCode ./src/mySrcCode2 dir_srcs)

aux_source_directory(./src dir_srcs) aux_source_directory(./src/mySrcCode dir_srcs) aux_source_directory(./src/mySrcCode2 dir_srcs)

4.3.4 本方案配置部分

第四部分配置项目的编译信息,内容如下所示:

RV1126B

配置项如下所示。

RV1126B

4.4 build.sh编译脚本:

4.4.1 路径定位部分

第一部分用于提取目录用于编译操作,内容如下所示:(进入build.sh脚本所在目录,并且提取当前目录绝对路径,提取当前目录名称)

RV1126B

4.4.2 清除编译部分

第二部分清除操作,清除目录为build,以及Release下通过编译生成出来的文件,内容如下所示:(执行build.sh脚本时,带入了参数“clear”,则清空编译输出)

RV1126B

4.4.3 编译操作

第三部分,编译直接调用cmake,内容如下所示:(重新编译,成部署目录,并把资源自动部署进板卡)

RV1126BRV1126B
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分