我正在尝试使用简单的运动检测代码来检测相机的运动。我正在使用 OpenCV 库,并且我有一些代码可以利用两帧之间的差异来检测变化。
我的差异框架工作得很好,没有运动时它是黑色的。
问题是我现在如何能够检测到停止记录的黑暗或开始记录帧的黑暗。
谢谢大家。
一个非常简单的事情是将整个差异图像相加成一个整数。如果该总和高于阈值,则您有运动。然后你可以使用第二个阈值,当总和低于该限制时,你就停止了运动。
您还可以使阈值仅在自上一个阈值后经过一段时间后才更改程序状态。即在检测到移动后,您不会在 10 秒内检查是否缺少移动。
如何在内部存储一个黑框并使用相同的比较代码?如果您的新帧与全黑帧不同(超过阈值),请开始录制。
这似乎是最直接的,因为您已经掌握了图像处理算法。
看看自由软件运动的代码以获得鼓舞人心的想法。
对于可靠的运动检测,有很多事情需要牢记。例如,容忍太阳自转的缓慢变化。或者接受可能来自最便宜的相机的瞬间图像故障。
从我的一个小经验来看,我认为比仅仅将所有差异相加更好,计算变化超过某个阈值的像素数量会更好。
Motion 还提供了遮罩,例如可以让您忽略附近道路上的运动。