Python 如何使用opencv检测帧之间是否存在运动,而不只是减去帧?
我有一个固定位置的摄像头,可以观察目标,我想检测是否有人走在目标前面。场景中的照明可以更改,因此,从前一帧减去新更改的帧将检测运动,即使实际没有发生运动。我曾想比较两帧之间的轮廓数量(通过在canny获得的二值边缘图像上使用FindOntours()获得,然后获得该图像的大小()),因为这里的一个大变化可能表示移动,同时对光线变化不太敏感,我是OpenCV的新手,到目前为止,我的实现还没有成功。有没有一种方法可以让它工作,或者我只需要减去帧。我不需要追踪那个人,只需要检测他们是否在现场。有几种方法可以做到这一点 首先想到的是对传入图像进行2D FFT。颜色不应该对FFT影响太大,但是移动、进入/退出帧的对象会影响FFTPython 如何使用opencv检测帧之间是否存在运动,而不只是减去帧?,python,c++,opencv,image-processing,Python,C++,Opencv,Image Processing,我有一个固定位置的摄像头,可以观察目标,我想检测是否有人走在目标前面。场景中的照明可以更改,因此,从前一帧减去新更改的帧将检测运动,即使实际没有发生运动。我曾想比较两帧之间的轮廓数量(通过在canny获得的二值边缘图像上使用FindOntours()获得,然后获得该图像的大小()),因为这里的一个大变化可能表示移动,同时对光线变化不太敏感,我是OpenCV的新手,到目前为止,我的实现还没有成功。有没有一种方法可以让它工作,或者我只需要减去帧。我不需要追踪那个人,只需要检测他们是否在现场。有几种方
第二种方法是使用SIFT或SURF生成图像中的特征列表,您可以将这些点插入到地图中,按照您喜欢的方式进行排序,然后在您拍摄的最后一张图像和当前图像之间进行设置。您还可以使用FLANN功能来比较生成的功能。我有点生疏,但有多种方法可以做到这一点 SIFT和SURF是非常昂贵的操作,所以我认为你不会想使用它们 有几种“背景去除”方法 平均删除:在这一个中,你得到N帧的平均值,并将其视为BG。这很容易受到很多因素的影响,如光线变化、阴影、移动对象长时间停留在某个位置等