/// <summary> /// Copy the input image into the back buffer /// </summary> /// <param name="source">Input image</param> public void Send(CVImage source) { bool Reinitialise; lock (FBackLock) Reinitialise = FBackBuffer.SetImage(source); if (Reinitialise) { InitialiseFrontFromBack(); } Swap(); }
public override void Process() { if (FInput.Allocated) { if (FBuffer.Allocated) { FOutput.Image.SetImage(FBuffer); FOutput.Send(); } FBuffer.SetImage(FInput.Image); } }
public override void Process() { if (FThresholdEnabled) { if (FInput.ImageAttributes.ColourFormat != TColourFormat.L8) { FInput.Image.GetImage(TColourFormat.L8, FOutput.Image); if (DifferenceMode == TDifferenceMode.AbsoluteDifference) { CvInvoke.cvAbsDiff(FOutput.CvMat, FBuffer.CvMat, FOutput.CvMat); } CvInvoke.cvThreshold(FOutput.CvMat, FOutput.CvMat, 255.0d * Threshold, 255, THRESH.CV_THRESH_BINARY); FInput.Image.GetImage(TColourFormat.L8, FBuffer); } else { if (DifferenceMode == TDifferenceMode.AbsoluteDifference) { if (!FInput.LockForReading()) { return; } CvInvoke.cvAbsDiff(FInput.CvMat, FBuffer.CvMat, FOutput.CvMat); FInput.ReleaseForReading(); } CvInvoke.cvThreshold(FOutput.CvMat, FOutput.CvMat, 255.0d * Threshold, 255, THRESH.CV_THRESH_BINARY); } } else { if (DifferenceMode == TDifferenceMode.AbsoluteDifference) { if (!FInput.LockForReading()) { return; } CvInvoke.cvAbsDiff(FInput.CvMat, FBuffer.CvMat, FOutput.CvMat); FInput.ReleaseForReading(); } FBuffer.SetImage(FInput.Image); } FOutput.Send(); }