我有一个视频源,其中包含几个以不同速率闪烁的灯。所有灯的颜色都相同(它们都是红外LED)。如何检测这些闪烁灯的位置和频率?
声明:我对OpenCV非常陌生。我有一本《学习OpenCV》的书,但我发现它有点难以理解。如果有人能用OpenCV术语解释一种解决方案,我将不胜感激。我并不期望有人为我编写代码。
我有一个视频源,其中包含几个以不同速率闪烁的灯。所有灯的颜色都相同(它们都是红外LED)。如何检测这些闪烁灯的位置和频率?
声明:我对OpenCV非常陌生。我有一本《学习OpenCV》的书,但我发现它有点难以理解。如果有人能用OpenCV术语解释一种解决方案,我将不胜感激。我并不期望有人为我编写代码。
使用使LED可见的阈值对序列中的每个图像进行阈值处理。如果您可以使用仅保留LED并消除背景的阈值进行阈值化处理,那么您就完成了大部分工作,因为现在您只需要跟踪每个看到LED的位置并计算它出现的次数。
作为中间步骤,如果阈值化图像中存在"背景噪声",可以使用腐蚀来消除小错误,然后可能进行膨胀以"闭合"实际感兴趣的斑块中的空洞。
如果场景是静态的,您还可以通过取几帧的中位数并从任何帧中删除所得到的中位数图像来创建一个简单的背景模型,并对其进行阈值处理。已更改的内容(您的LED)将显示得更强。
如果场景正在移动,我没有其他(容易的)解决方案,除了确保LED足够亮以便能够使用上述阈值法。
至于OpenCV:如果您知道要做什么,找到执行此操作的函数就不是很难。困难的部分是提出解决问题的方法,而不是实际编码。
希望这个问题仍然有点实际意义,并且我的解决方案是有意义的。