寒武纪MLU270 平台 CNStream 学习记录

官方的sample跑的效果图先放一张

 

视频链接:

QMCY 南京 无人机结合AI 智能检测 物体识别 特诊检测效果图

码率太低了效果不太好 前两天 把开发环境搭建起来了,

主要就是 只有一个MLU270板卡 需要多人共用,而环境有不一样

所以我就自己设置了Cambricon的目录(/home/QMCY/mlu270/sdk/neuware) 

取代了系统的默认安装目录 (/usr/local/neuware)这样两个人的工作互不影响 可以点击下面查看

寒武纪Cambricon MLU270 环境搭建 CNStream EasyDK编译

环境搭建好之后就是看文档,跑官方的例子 ,文档在CNStream/docs目录下

然后官方的例子 多数都能跑得起来 ,但是有几个报了CNRT的错误 不知道啥原因如下图

正常编译完成之后 会在sample/bin目录下生成三个可执行文件,然后各个模块下不同的例子 打开目录下的run.sh  会发现 最终 都会调用这三个文件 前面的都是设置参数什么的 以及配置json文件如下面黑背景的图片:

 

 比较有意思(或许说困惑比较好?)的是,根据官方文档的说法,CNStream 使用pipeline流水线的模式,你要干什么事的话,新建一个流水线,可以向这个流水线里面添加不同的模(module),主要模块就是source(数据源)decode encode display  OSD inference rtsp 等,(当然你也可以自定义一个模块) .然后你需要根据自己的应用场景 来对这些模块进行排列组合,需要哪个模块,把这个模块添加进去就可以。而添加的方法就是通过一个config.json文件来进行配置。刚开始比较费解(因为虽然例子跑起来了,完全不知道怎么跑的 程序入口在哪)经过昨天的研究,差不多理出了头绪,json格式的配置文件大概长下面这个样子:

具体每个模块的参数 需要去看文档里面都有介绍。

配置文件配置好之后 ,给程序传一些参数。就可以去看cns_launcher.cpp源码就可以了

对了 这种通过配置文件设置模块的方式是官方推荐的做法,如果你不喜欢可以去看simple_run_pipeline.cpp 那个是传统的方法。我们还是按官方方法来进行。找到主函数

 第一眼看,懵逼了 没几个认识的,

ParseCommandLineFlags 这玩意 我对着它闷了半天 ,后来 百度了下 才发现原来是个google的解析命令行的一个工具,

然后InitCNStreamLogging 这个没啥看的,看名字就知道是干啥的了

接下来video_urls 用来保存视频文件路径 可以有多个视频文件

下面来到了pipeline 这个就是官方推荐的流水线模式了,构建了一个pipeline,

之后得往这里面添加模块,需要哪些模块呢,通过这个 BuildPipelineByJSONFile函数来读取

可以看到有个参数,就是config.json的路径了 怎么走的看下图

  

可以看到 用rapidjson库来解析json文件了 然后把解析出来的数据,保存下来

然后设置了一个observer 不知道干啥的以后慢慢研究

之后设置了一个数据源,然后就start了 

这里也可以看到因为有模块通常不止一个 所以 有一个for循环 ,依次 启动每一个模块

然后回到main函数

 一大段说是性能统计 追踪的函数,还没时间细看,暂时先不关注 然后下面比较重要了

系统起来之后,添加数据源了,例子是根据传进来的参数进行配置的,我们公司最终的系统肯定是要做成动态的了 应该是通过HTTP 进行数据交互

可以看到设置了视频的分辨率 ,因为video_urls是个列表 有多个视频源,所以需要遍历一下 

根据不同的类型 rtsp流,MP4文件 图片文件 264 Raw格式等等 调用的添加接口不一样。

接下来是个显示模块,我们的mlu270 装在了ubuntu服务器上 只有命令行格式,没法看 所以跳过

 接下来 是关闭pipeline 看上去是等待程序执行完 或者手动退出的处理 暂且认为是

通常的while(1)

 最后是 退出程序是的收尾工作。没啥看的  今天先分析到这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMCY_jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值