/// <summary>
        /// Interpolates a single frame, starting at index
        /// </summary>
        /// <param name="index">The index pointing to the first frame</param>
        public double InterpolateManual(int index, double maxError)
        {
            Frame firstFrame  = frameList.FramesList.ElementAt(index);
            Frame secondFrame = frameList.FramesList.ElementAt(index + 1);

            Image <Bgr, Byte> firstImage  = GetImageAt(index);
            Image <Bgr, Byte> secondImage = GetImageAt(index + 1);

            IPathContainer tempContainer = new PathContainer();
            double         error         = interpolator.InterpolatePaths(firstFrame.Curves, tempContainer, firstImage, secondImage);

            if (error < maxError)
            {
                if (secondFrame.Curves.TotalPointCount > 0)
                {
                    if (NextFrameContainsCurves != null)
                    {
                        InterpolationArgs args = new InterpolationArgs();

                        NextFrameContainsCurves(this, args);

                        if (args.Handled == true)
                        {
                            secondFrame.Curves = tempContainer;
                        }
                        else
                        {
                            return(double.MaxValue);
                        }
                    }
                    else
                    {
                        return(double.MaxValue);
                    }
                }
                else
                {
                    secondFrame.Curves = tempContainer;
                }
            }

            return(error);
        }
Ejemplo n.º 2
0
 void interpolationControl_NextFrameContainsCurves(object sender, InterpolationArgs e)
 {
     if (!interpolateMessageShown)
     {
         MessageBoxResult result = MessageBox.Show("The next image already contains drawn paths. Do you want to continue?", "Warning", MessageBoxButton.OKCancel);
         if (result == MessageBoxResult.OK)
         {
             interpolateMessageShown = true;
             e.Handled = true;
         }
         else
         {
             e.Handled = false;
         }
     }
     else
     {
         e.Handled = true;
     }
 }