【发布时间】:2016-09-06 14:59:57
【问题描述】:
我目前正在从事机器人汽车的爱好项目。 在相机前面,我将放置 2 个光源,我想通过计算机视觉检测光源并将我的机器人汽车定位在它前面。
在 Raspberry Pi 3 上使用 Python 和 OpenCV,我有以下工作: 我正在使用 2 个红光源。使用以下 OpenCV 函数:cvtColor(frame to HSV)、inRange(red filter)、findContours(找到 2 个光源)、Moments(获取光源的 x,y 坐标),计算光源的距离框架的边缘并生成汽车必须移动的方向。
现在的问题是,我无法确定哪个红光源是左哪个是右。例如,如果我用 2 个红色光源转动我的面包板,程序将无法判断汽车必须绕着光源移动。
我有 2 个想法来解决这个问题: - 使用频率让光源闪烁不同。假设 LEFT(1, 0, 1) 和 RIGHT(0, 1, 0)。我可能无法在这里使用线程,因为我需要“每一帧”。 - 使用 1 个红色和 1 个绿色光源。为此,我必须添加单独的函数来检测绿色,这意味着更多的处理能力。
由于我在该领域缺乏经验,因此我正在努力选择最佳选项。你有什么建议吗?或者哪个想法更好?
【问题讨论】:
-
我不明白使用频率让光源闪烁不同。比如说 LEFT(1, 0, 1) 和 RIGHT(0, 1, 0) 你能解释一下吗?
-
@LBerger:使用一秒时间帧意味着每秒 3 帧。 Left(1,0,1) 将 0.33s ON,然后 0.33s OFF,然后 0.33s ON。也可以使用 0.5s 的时间范围。这意味着 0.167s 开启,0.167s 关闭,0.167s 开启。
标签: python opencv raspberry-pi computer-vision object-detection