2017-04-26 11 views
1

私が読んだチュートリアル、サンプル、またはブログはすべて、に移動している限り、フレーム内の動くオブジェクトを追跡するさまざまな方法を示しています。これは遍在しています。オブジェクトが移動を停止したかどうかを判断する方法

は、私は何を把握しようとしていることは、オブジェクトが移動を停止したり、実際にフレームを残したかどうかを判断する方法にです。背景分離を使用する場合、オブジェクトの移動が停止すると、オブジェクトは前景の一部になり、そのように「消える」。もう一度動くと「再現」します。オブジェクトがフレームを離れるときに同じ動作が存在するとわかる限り、それは単に「消える」だけです。たとえば、次のコードは、このことを示しています。

**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; 
} 

を私はもはや背景分離が答えであることを確信していません。

フレームから離れるオブジェクトの明確な表示は何でしょうか?

おかげで、 ダグ

答えて

1

置きtracker.updateかのループのための条件として、条件が失敗した場合、興味の対象は、フレームを残しています。 オブジェクトが移動したかどうかを検出する場合は、x &オブジェクトのバウンディングボックスのy値が前回のxと同じである場合&値がオブジェクトと同じ場合はバウンディングボックスのy値

関連する問題