Пример #1
0
        /// <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();
        }
Пример #2
0
        public override void Process()
        {
            if (FInput.Allocated)
            {
                if (FBuffer.Allocated)
                {
                    FOutput.Image.SetImage(FBuffer);
                    FOutput.Send();
                }

                FBuffer.SetImage(FInput.Image);
            }
        }
Пример #3
0
        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();
        }