Raspberry Pi Ball 跟踪
(注意:这是一个高级教程,不适合 linux 初学者。)
在本教程中,我将演示如何在 Raspberry Pi 上使用 OpenCV 跟踪乒乓球。只要可以从其背景中很好地检测到它,它就可以用于跟踪任何圆形物体。这对球跟踪机器人和类似项目很有帮助。
你需要的东西:
1. Raspberry Pi(安装了最新的 Raspbian,您可以从这里获取:https://www.raspberrypi.org/downloads/ 按照同一站点上的安装说明进行操作)
2. USB 网络摄像头(测试 Rasppi 支持的一个)
3.我用Linux Mint 17测试过的Linux主机(最好是Linux Mint/Ububtu)。
4. 有debian系统使用经验
第一步:初始设置
说明:
1. 建立 Rpi 连接:键盘、鼠标、网络摄像头、以太网或 wifi 加密狗、通过 HDMI 显示、电源
2. 开启你的 Rpi
3. 在 Rpi 上启动到 raspbian GUI(Raspbian 启动到 GUI)
4. 打开终端并安装 OpenCV(按照 Trevor Appleton 的优秀指南验证是否正确安装了 OpenCV 在 Rpi 上安装 OpenCV)
5. 使用 scp 或使用闪存驱动器将文件“bdtct.py”复制到 rpi 中的主文件夹。
第 2 步:运行代码(也就是有趣的部分)
在你的 rpi 终端中,导航到你复制 bdtct.py 的文件夹
2. 运行以下命令:
须藤python bdctc.py
那应该像上图那样打开 5 个窗口
3. 将乒乓球(如果可能,使用黄色的)放在网络摄像头前。
5. 在“跟踪”窗口中应跟踪球。如果没有,分别调整“HueComp”、“SatComp”、“ValComp”窗口中的滑块,使“关闭”窗口中只有乒乓球区域显示为白色(参考上图)。您可能需要进行一些实验才能使其正常工作。记下它适用于您的滑块的值,您可以稍后在 bdtct.py 中编辑它们。
第三步:理解算法
在文本编辑器中打开 bdtct.py 文件。
bdtct.py 代码执行以下操作:
1.通过“cap =cv2.VideoCapture(-1)”获取输入
2.将视频帧重新调整为320×240的较小尺寸,以便我们的rpi每秒可以输出更多帧。
3. 使用相应的最小和最大滑块创建窗口“HueComp”、“SatComp”、“ValComp”等视觉元素。
4. 将输入从 BGR 转换为 HSV 系统“hsv =cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)”
5. 拆分色调、饱和度和值分量。
6. 根据相应的 min 和 max 滑块定义的阈值范围对每个组件进行阈值处理,以获得二值阈值图像(见上图)
7. 将阈值化的色调、饱和度、值分量进行逻辑与运算,得到一个粗略的二值图像,其中只有乒乓球的像素是白色的,其余的都是黑色的。 (见上图)
8.平滑ANDed图像“关闭=cv2.GaussianBlur(关闭,(5,5),0)”
9.使用HoughCircles检测图像中的圆圈
10. 在原始输入框上绘制检测到的圆圈。
欲知更多详情:Raspberry Pi Ball 跟踪
制造工艺