1.介绍
该项目主要由鲁班猫ZeroW为核心,OV8588摄像头为图像采集设备,采用QT框架作为软件界面,采用RKNN中的YOLOV5作为图像识别模型。
可以检测多种物体,检测到的物体会在屏幕列表中显示,同时也可以在图像中框出来,选定的物体可以在图像上反应出来。同时还可以设置报警源,报警源可以是人,猫,狗,车等,当摄像头内或者摄像头设置的区域内监测到报警源,则会产生图像和声音报警。
主要应用场景如下:
1、在仓库中,检测是否有人或动物闯入,当检测到则会发出报警。
2、在车库或者私人停车位,当检测到有人企图想对私人物品损坏,也可以发出报警,劝退他人。
3、在办公室内,监测某个物品,如笔记本、手机或机密材料等贵重物品,把这些物品添加监视区域内,当有人进入发出报警。
2.整体框架
此次项目我不仅用上了硬件设计和软件设计,还用上了结构设计,让其更加附有哨兵的样子。
2.1硬件框架
硬件部分比较简单,鲁班猫ZeroW+OV8588摄像头组成,同时通过蓝牙连接WIFI,VNC共享屏幕。
2.2软件框架
软件框架主要以QT为界面,使用OpenCV做图像处理,采用YOLOV5模型进行图像识别,QT界面中对一些参数进行了可视化,方便用户操作。同时还在报警时让播放报警音和提示声。
2.3结构框架
结构主要由四部分组成,鲁班猫ZeroW的外壳,摄像头外壳,天线外壳和底座,为什么要设计一个底座,是为了以后方便移植到别的产品上去,能够实现更多的DIY结合。
3.设计
硬件部分的设计没有什么可讲的,因为采用的是野火提供的模块和开发板,主要讲软件设计和结构设计,先来讲一下难度不高的结构设计。
3.1结构设计
以前做比赛都是裸板,整体效果看起来不好,而且操作的时候容易对裸露的板子造成一定的破坏。所以这次项目我加上了结构设计,第一是为了更好的封装板子,第二也是为了让项目能够更加具备产品的样子。
整个设计中我觉得设计的比较有意思的部分就是天线部分,因为有时候天线是需要设置成不同的角度,有些角度信号会更强,所以我设计的时候,特意让天线部分是可以运动的。由于Linux板子发热都是比较大的,我的3D材料又不是金属,所以我设计的通气栅格,让结构内部更好与外部的空气进行流通。
下面是在3D建模的软件中的样子。
这个是3D打印机打印外壳的过程。
这张就是组装好之后的成品了。
特意设计成像哨兵的模样,所以给这次项目的名称就叫做【现代化无线哨兵】
3.2软件设计
讲完结构设计,接下来就是软件设计,在讲软件设计之前,我推荐一个软件,叫做VNC Views,这个软件可以让Linux开发板在没有屏幕的时候也可以显示界面,五一期间我就用这个软件进行开发的,只要连接局域网就可以远程屏幕控制开发板了,下面是远程控制的效果图。
现在来讲软件设计,这部分我就不贴代码了,纯理论讲一下整体射界思路吧~
首先第一步就是获取摄像头的图像,一开始我想用OpenCV中的函数获取摄像头图像,但是不太可行(一直提示找不到摄像头),后面我就改用QT的函数获取摄像头的图像,能正常获取但是要安装一些模块。
摄像头数据能够正常获取之后,就需要把图像数据传入RKNN模型,让其进行识别并数据,这里就需要用到例程了,我将例程移植到我的工程中,要打开训练好的模型,同时还要对摄像头的图像进行处理,因为训练好的YOLOV5模型,只能识别640x640的图像,所以我把摄像头图像输出为640x640,然后再传入RKNN模型中去进行识别。
能够正常识别之后,剩下的就没有太多的技术难度了,首先就是设计报警模式,全屏报警和区域报警,区域报警当设置的报警源进入某个区域的时候就产生报警,这个区域可以通过OpenCV进行显示。
剩下的就是报警显示和声音了,声音通过文字转语音工具生成,报警音是在网上找的一个,根据报警源选择对应的声音进行报警即可。
现在给展示一些软件运行的图片。
检测到两量车,并选择第一辆车。
添加车辆进入视野报警,目前已产生报警。
检测到猫。
检测到狗。
检测到人。
检测到笔记本电脑。
检测到人和手提包,多对象检测。
人进入区域内的报警。
4.结论
这是我第一个在Linux上做的项目,让我对Linux有了更多的了解,之前都是纸上谈兵,没有实际的项目经验,这次项目让我收获了不少,后续我也会在鲁班猫上继续开发一些有趣的项目,如果想看这个项目的更多视频可以去硬声APP上搜索【二哲科技】进行观看,也可以去我的B站【二哲科技】上看观看。