我是一名高中生,目前是机器人团队的程序员。今年,我们计划进行一些视觉处理/跟踪,以自动找到目标并与目标保持一致。我们使用java来编程我们的机器人,并且是FRC(第一机器人大赛)的一部分。使用RoboRealm,我们在使用标准方法实现视觉跟踪方面遇到了一些麻烦,我曾想过将Raspberry Pi用作协处理器,仅用于视觉跟踪目的。我已经做了一些关于使用什么的研究,看来OpenCV是最好的。我对Raspberry Pi的编码经验不多,但对python有基本的了解。我正在考虑让覆盆子pi完成对目标的所有跟踪(沿着球门外缘有反光带),并以某种方式发送信号(通过roborio - 板载FRC标准处理器)和我的java代码,然后告诉我们的机器人要么向左转多,要么更多,这取决于我们离目标有多远。我很好奇这是否适合像我这样的初学者程序员。任何反馈都会很棒!
谢谢!
答案 0 :(得分:1)
使用contour features听到的所有内容都非常可行您可以使用边界矩形/圆等来提取目标的质心(COM)坐标。此时你可以像你说的那样做一个简单的阈值处理,如果COM在左边,向左移动,反之亦然。
最大的问题是可靠地找到目标,如果你之前从未完成过CV,那么很容易低估这项任务的难度。我的建议是努力使目标尽可能明显。既然它的反光也许你可以照亮它以使它更突出?也许从机器人发出IR(红外线)并在相机上使用红外线滤镜。您也可以使用可见光谱中的任何常规光进行此操作。一旦你在目标和背景之间创造了足够的对比度,你可以做简单的thresholding或者可能做template matching(尽管速度要慢得多,如果目标是一个角度或者是倾斜的话,它将不起作用)。
我希望我能给你一些想法,祝你好运。
修改强>
在您的评论中,您提到您的目标是绿色,可以简化您的问题。我不确定你对CV有多了解,但图像有RGB格式。每个像素都有红色,绿色和蓝色分量。如果你正在寻找绿色,那么split the colors可能会很好,只有thresholding的图像的绿色通道。开放的CV网站开始时有很大的tutorials。我强烈建议你(以及你团队中的其他人)看看这个。我建议你阅读:
另一个提示是在使用静止图像进行算法开发工作期间。从机器人可能遇到的角度拍摄一些不同的目标图像。对这些进行所有测试和开发。一旦你有一个高置信水平,然后转移到视频。即使这样,我也会从离线开始 视频(您捕获的录制,而不是实时)。如果您发现问题很容易重现它们(只需回到vid中那个麻烦的时间戳并调整算法)。然后最后使用在线(实时)视频进行操作。
最后一条建议,即使您的最终目标是在RPi上运行,也可以随意在您拥有的任何计算机上测试您的CV算法。如果您在大多数时间使用笔记本电脑,请将opencv置于其上,移植到Rpi的主要区别在于您对RPi相机模块的寻址方式。但如果你仍处于使用静止图像和离线视频的早期阶段,这将无济于事。但这只是我的意见,我知道当我整天在Windows笔记本电脑上时,我自己无法将我的Pi拖出代码。我更有可能使用我的日常PC处理代码。