Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何确定对象是否停止移动或离开帧_Opencv_Emgucv - Fatal编程技术网

Opencv 如何确定对象是否停止移动或离开帧

Opencv 如何确定对象是否停止移动或离开帧,opencv,emgucv,Opencv,Emgucv,我读过的每个教程、示例或博客都展示了跟踪帧中移动对象的各种方法,只要它在移动。这已经变得无处不在 我一直想弄清楚的是如何确定对象是否停止移动或实际离开帧。使用背景分离时,当对象停止移动时,它将成为前景的一部分,因此“消失”。当它再次移动时会“重新出现”。据我所知,当一个对象离开帧时,同样的行为存在,它只是“消失”。例如,以下代码片段演示了这一点: **BackgroundSubtractorMOG2 _fgDetector = new BackgroundSubtractorMOG2(); Cv

我读过的每个教程、示例或博客都展示了跟踪帧中移动对象的各种方法,只要它在移动。这已经变得无处不在

我一直想弄清楚的是如何确定对象是否停止移动或实际离开帧。使用背景分离时,当对象停止移动时,它将成为前景的一部分,因此“消失”。当它再次移动时会“重新出现”。据我所知,当一个对象离开帧时,同样的行为存在,它只是“消失”。例如,以下代码片段演示了这一点:

**BackgroundSubtractorMOG2 _fgDetector = new BackgroundSubtractorMOG2();
CvBlobDetector _blobDetector = new CvBlobDetector();
CvTracks _tracker = new CvTracks();
CvBlobs _blobs = new CvBlobs();**

private int FindAndTrack()
{
    CvInvoke.GaussianBlur(_analyzeMat, _smoothedFrame, new System.Drawing.Size(3, 3), 1); 

    #region use the BG/FG detector to find the forground mask

    _fgDetector.Apply(_smoothedFrame, _foregroundMask);

    #endregion use the BG/FG detector to find the forground mask

    _blobDetector.Detect(_foregroundMask.ToImage<Gray, byte>(), _blobs);
    _blobs.FilterByArea(_minimumAreaValue, int.MaxValue);

    _tracker.Update(_blobs, 0.01 * _scaleValue, 1, 5);
    return _tracker.Count;
}
**BackgroundSubtractorMOG2\u fgdetometer=new BackgroundSubtractorMOG2();
CvBlobDetector_blobDetector=新的CvBlobDetector();
CvTracks _tracker=新的CvTracks();
CvBlobs _blobs=新的CvBlobs()**
私有int FindAndTrack()
{
GaussianBlur(_analyzeMat,_SmootedFrame,新系统图纸尺寸(3,3),1);
#区域使用BG/FG探测器查找放弃的掩模
_FGD探测器。应用(_平滑帧,_前地面掩模);
#endregion使用BG/FG探测器查找圆形掩模
_blobDetector.Detect(_foregroundMask.ToImage(),_blobs);
_blobs.FilterByArea(_minimumAreaValue,int.MaxValue);
_更新(_blobs,0.01*_scaleValue,1,5);
返回_tracker.Count;
}
我不再确定背景分离可能是答案

什么能给出物体离开框架的确切指示

谢谢,
Doug

放置跟踪器。如果条件失败,则更新为if循环的条件您感兴趣的对象已离开帧。 如果要检测对象是否已移动,请将对象边界框的x&y值与以前边界框的x&y值进行比较(如果值与对象已停止移动的值相同,或者对象已移动)