如何在RK3588上面使用摄像头实时实现物体识别?

步骤如下:

1.硬件环境:Neardi LPA3588开发板,USB camera(或者其它camera),  软件环境: RK3588 SDK + Neardi LPA3588 Ubuntu image。

2.在LPA3588开发板下载rknpu2(GitHub – rockchip-linux/rknpu2)。

3.在LPA3588上面安装OpenCV, 如下:

sudo apt install libopencv-dev libopencv-videoio-dev  libopencv-video-dev libopencv-imgproc-dev libopencv-highgui-dev

4.在此以rknn_ssd_demo上进行更改, 进入rknn_ssd_demo目录, 修改CMakeLists.txt, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

sample code使用的是OpenCV 3的库, 在此我们注释了以便使用我们安装的OpenCV 4的库。

5.Rockchip原始的rknn_ssd_demo是对图片进行分析, 因此使用单线程; 在此是从摄像头获取数据进行物体识别, 单线程有点卡, 因此使用多线程来实现。

首先, 创建queue数据结构, 代码如附件queue.hpp。

6.修改main.cc:

1). 添加新的头文件, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

2). 创建2个全局变量, _idleimgbuf & _imgdata, 用于保存从camera获取的image, 并且定义最大长度是300, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

3). 添加线程函数, 从camera读取数据image, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

这里我们读取camera第一帧数据, 以便知道camera frame的大小。

4). 更改输入参数, 并启动线程代码, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

         5). 主函数更改读取数据部分:??????

如何在RK3588上面使用摄像头实时实现物体识别?

          完整的代码, 请参考附件的源代码。

6). 最后是释放资源, 如下:

如何在RK3588上面使用摄像头实时实现物体识别?

7.编译及运行rknn_ssd_demo:

         ./rknn_ssd_demo ./model/RK3588/ssd_inception_v2.rknn 41

         这里的41是/dev/video41设备的索引, 需要根据实际camera输入, 设别结果如下:   

如何在RK3588上面使用摄像头实时实现物体识别?

文章知识点与官方知识档案匹配,可进一步学习相关知识Git技能树首页概览2989 人正在系统学习中

来源:「已注销」

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月16日
下一篇 2022年10月16日

相关推荐