最终目标:实现百米内的目标检测和深度测量(计划使用在道路的目标检测)
前段时间一直在调试yolov3和相机接口问题.如果使用普通的相机,yolov3可以直接调用,实现物体识别的功能.这个我也写了一篇文章. 但是不能实现测距的功能, 我购买的这个双目相机,公司声称可以测100m以内的物体,所以买来打算调试一番.对于一个车辆工程的算法小白,这两个代码中既有c语言,又有c++,调试过程是痛苦的,结果是满意的,最后经过自己将近一个月的努力,最终实现了所有预想的功能,但是,效果目前还需验证.
目前还没有去道路上测试,只是在实验室试了一下,下面是效果图,视频回头补上.
目前还存在的两个问题:
1)相机快速抖动时,无法识别出物体.(后来通过代码优化基本解决了)
2)距离精度有时候不太好.
下面这一个效果就是不太好,明显有一些错误.
相机实例代码功能:通过鼠标框出想要测距的物体,然后返回物体对应的距离
yolov3功能:识别出预训练包含类别的物体,并框选出来.
调试整体思路
1)找到双目相机基础代码中的数据输出代码段,主要包括深度信息和RGB信息。
2)找到目标识别源代码中接收RGB图像的代码段,我使用的目标识别代码是yolov3,可以直接搜索Darknet官网下载目标识别代码,现在出来yolov5了,可以试一试。
3)将1中找到的双目相机RGB数据输入到2中找到的目标识别代码中接收RGB的代码,两者结合。
4)找到目标识别源代码中输出障碍物坐标框的代码段。
5)找到双目测距代码中计算障碍物深度的代码段。
6)将4中得到的障碍物框依次输入到5中的代码段中,得到目标框中障碍物的深度。
7)找到目标识别网络中显示障碍物种类的额代码段,将深度值添加到里面,一起显示出来。
注释:最近需要代码的人有点多,其实这个代码是我当时哪里有问题就改哪里,所以里面会有很多地方很乱,有些地方也比较多余,今天大致将修改思路整理一下,后续有时间会一点一点将过程写出来。
有需要代码的留下邮箱,我看到的话会给你们发过去。
附件1.代码中双目测距代码的流程图,有问题的地方欢迎大家交流学习。
附件2(整个过程的流程图)
代码链接自取:
链接: https://pan.baidu.com/s/1h15pL0-xn__L8pnJYrlbEQ
密码: 9b8l