Browse Source

Dual TV L1 Optical Flow Algorithm.

UWP10
Canming Huang 12 years ago
parent
commit
a8cd4ac1c0
  1. 10
      Emgu.CV.Extern/video_c.cpp
  2. 2
      Emgu.CV.Extern/video_c.h
  3. 20
      Emgu.CV/OpticalFlow.cs

10
Emgu.CV.Extern/video_c.cpp

@ -41,4 +41,14 @@ void CvBackgroundSubtractorMOGRelease(cv::BackgroundSubtractorMOG** bgSubstracto
{
delete *bgSubstractor;
*bgSubstractor = 0;
}
CVAPI(void) cvCalcOpticalFlowDualTVL1(CvArr* i0, CvArr* i1, CvArr* flow)
{
cv::Mat i0Mat = cv::cvarrToMat(i0);
cv::Mat i1Mat = cv::cvarrToMat(i1);
cv::Mat flowMat = cv::cvarrToMat(flow);
cv::Ptr<cv::DenseOpticalFlow> dof = cv::createOptFlow_DualTVL1();
dof->calc(i0Mat, i1Mat, flowMat);
}

2
Emgu.CV.Extern/video_c.h

@ -21,4 +21,6 @@ CVAPI(void) CvBackgroundSubtractorUpdate(cv::BackgroundSubtractor* bgSubstractor
//BackgroundSubtractorMOG
CVAPI(cv::BackgroundSubtractorMOG*) CvBackgroundSubtractorMOGCreate(int history, int nmixtures, double backgroundRatio, double noiseSigma);
CVAPI(void) CvBackgroundSubtractorMOGRelease(cv::BackgroundSubtractorMOG** bgSubstractor);
CVAPI(void) cvCalcOpticalFlowDualTVL1(CvArr* i0, CvArr* i1, CvArr* flow);
#endif

20
Emgu.CV/OpticalFlow.cs

@ -206,5 +206,25 @@ namespace Emgu.CV
CvInvoke.cvReleaseImage(ref flow0);
}
}
/// <summary>
/// Dual TV L1 Optical Flow Algorithm.
/// </summary>
/// <param name="prev">First image</param>
/// <param name="curr">Second image</param>
/// <param name="velx">Horizontal component of the optical flow of floor((prev->width - block_size.width)/shiftSize.width) x floor((prev->height - block_size.height)/shiftSize.height) size. </param>
/// <param name="vely">Vertical component of the optical flow of the same size velx.</param>
public static void DualTVL1(
Image<Gray, Byte> prev,
Image<Gray, Byte> curr,
Image<Gray, Single> velx,
Image<Gray, Single> vely)
{
using (Matrix<Single> tmp = new Matrix<float>(prev.Rows, prev.Cols, 2))
{
CvInvoke.cvCalcOpticalFlowDualTVL1(prev, curr, tmp);
CvInvoke.cvSplit(tmp, velx, vely, IntPtr.Zero, IntPtr.Zero);
}
}
}
}
Loading…
Cancel
Save