锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

rk3399之AI识别_三

时间:2022-10-10 21:00:00 rk093塑封型精密电位器

本文继续描述如何将3399与之前的网络摄像头AI目前,我们使用最新的识别信息yolov识别5模型。使用该模型rknn_api,可在3399相关论坛官网下载,1808驱动需要更新至1.6以上。

官方网站给出的例子是分析图片,并将识别结果再次绘制到图片上。python接口可能更丰富,支持直接拉流分析。但是如何通过c 分析界面拉流,进一步分析多路码流。我们可以识别多路视频,而不需要识别帧率。

首先,我们确定AI识别的流程

加载模型数据-初始化计算棒-通过api将接口传输到图片中RGB数据-分析结果-画框标识

从过程中可以看出,加载模型的初始化计算棒是固定的,计算棒的分析结果不需要用户关注。用户可以定制的流程是输入RGB数据、分析结果出来后画框(这是可选步骤,不一定要画框)。结合我们的第二篇文章,我们清晰。我们已经完成了相机的解码操作,并获得了它yuv我们的操作是将数据转换为RGB然后通过数据rknn_api将接口插入计算棒。这是我们的rga接口派上用场,可以yuv数据转换成rgb数据(我在这里测试的,其实是转换成的bgr数据正确)。

还有一点需要注意,介绍rgb考虑到分析的速度,数据不是原始的长度和宽度,通常会压缩图片。例如,训练支持416*416数据模型,原摄像头为1080*720(720P),那么得到720P的YUV数据后,需要将其缩放为416*416的rgb正确分析数据传入。所以这一步必须确定你训练的模型大小,然后有针对性地缩放和拉伸。rgb一般大小可以直接缩放rgb然而,为了更好地识别现实中的场景,减少缩放引起的物体扭曲。在进行冗余填充之前,我们应该按整数比例缩放图片opencv的copyMakeBorder函数。参考lettbox函数如下:

cv::Mat CV5Detect::letterbox(ffmpeg::RgaData &rData, int target_w, int target_h, int &wpad, int &hpad, float &scale) {     int in_w = rData.width;     int in_h = rData.height;     int tar_w = target_w;     int tar_h = target_h;     float r = std::min(float(tar_h) / in_h, float(tar_w) / in_w);     int inside_w = round(in_w*r);     int inside_h = round(in_h*r);     int padd_w = tar_w - inside_w;     int padd_h = tar_h - inside_h;     wpad = padd_w;     hpad = padd_h;     scale = r;     cv::Mat src(in_h, in_w, CV_8UC3);     src.data = rData.data;     cv::Mat resize_img(inside_h, inside_w, CV_8UC3);     /// 如果宽度和高度不是4对齐,则使用软缩(低性能)     if (inside_w % 4 != 0 || inside_h % 4 != 0)     {         cv::resize(src, resize_img, cv::Size(inside_w, inside_h));     }     else     {         ffmpeg::RgaData rgaDataOut;         rgaDataOut.type = ffmpeg::BGR24;         rgaDataOut.width = inside_w;         rgaDataOut.height = inside_h;         rgaDataOut.data = m_picData.get();         /// 通过rga进行缩放,性能高,不占cpu         if (!m_pPeg->transRga(rData, rgaDataOut))         {             errorf("enc transRga failed\n");             return resize_img;         }         resize_img.data = rgaDataOut.data;     }     // cv::imwrite("resize.jpg", resize_img);     padd_w = padd_w / 2;     padd_h = padd_h / 2;     int top = int(round(padd_h - 0.1));      int bottom = hpad - top;     int left = int(round(padd_w - 0.1));      int right = wpad - left;     /// 冗余填充,在等比缩放的条件下,使图片符合输入计算棒的要求RGB图像大小     cv::copyMakeBorder(resize_img, resize_img, top, bottom, left, right, cv::BORDER_CONSTANT, cv::Scalar(114, 114, 114));     return resize_img; }

一路摄像头AI识别基本上可以实现全帧率识别。即从解码-AI识别-显示,都可以串行操作。但同时,多路识别不能串行。需要解码,AI,显示异步解开。同时降低帧率。

本文以3399视频系列结束,附件包提供自己包装的解码,AI,显示一套流程。AI如果是3399加1808的方案,识别我们Pro还需要一点变化。程序仅保证720P以下分辨率显示和识别效果,代码流类型H264,可针对摄像头进行配置。

程序使用方法:

下载程序后,将压缩包解压到3399的任何目录并运行run.sh可以。配置视频方法,编辑config/QtUi/video_channel.json文件。根据下图的字段解释,可以配置相应的字段。重启程序可以在配置后生效。

{         "QtUiConfig" :          {                 "channels" : --->数组,接入多路摄像头。最多8路720P                 [                         {                                 "camType" : 0,                                 "enable" : true, --->设置能流true,拉流解码操作                                 "enableAI" : true, --->插入计算棒时,使能,可进行AI识别                                 "ip" : "192.168.31.61", --->摄像头IP,可根据实际情况填写                                 "name" : "chan2", --->相机名称,在多路情况下,名称不能重复                                 "nodeId" : "E024E47A524C45F8", --->如果手动填写,建议删除此字段,确保不一样                                 "password" : "root12345", --->摄像头密码                                 "port" : 80,                                  "procted_zone" :                                  {                                         "points" : [],                                         "type" : ""                                 },                                 "profile" : "Profile_1",                                 "protocol" : "onvif",                                 "streamUrl" : "rtsp://admin:root12345@192.168.31.61:554/Streaming/Channels/101", --->摄像头rtsp这是海康的例子,其他制造商的流动地址,自行确定填写                                 "user" : "admin", --->用户名                                 "widgetId" : --->播放窗口序列号                                 [                                         0                                 ]                         }                 ],                 "display" : true --->true为显示QT界面,false不显示        }
}

       建议接上显示屏,可以QT界面展示流界面及AI识别结果。可双击界面左下角,通道列表-全部通道,双击具体的通道。右侧窗口即可播放

        二次开发接口及程序免费运行license请联系微信HardAndBetter获取,或者加入QQ群586166104讨论。

        程序下载路径

        3399视频AI分析demo-图像识别文档类资源-CSDN下载

        没有积分可进行百度网盘下载,路径如下:

        https://pan.baidu.com/s/1zB7Ezpi4ONnVheRn1l84lA  提取码:8jjd

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章