private IplImage CutLeftRight(IplImage origin, PlateHorizontalGraph graph, Int32 method)
        {
            graph.ApplyProbabilityDistributor(new Graph.ProbabilityDistributor(0.0, 0.0, 2, 2));
            List <Graph.Peak> peaks = graph.FindPeak(3, method);

            if (peaks.Count != 0)
            {
                Graph.Peak p = peaks[0];
                return(GetSubImage(origin, new CvRect(p.Left, 0, p.GetDiff, image.Height)));
            }
            else
            {
                return(origin.Clone());
            }
        }
        public List <Char> GetChars()
        {
            List <Char> output = new List <Char>();

            List <Graph.Peak> peaks    = ComputeGraph();
            Int32             peakSize = (null == peaks)?0:peaks.Count;

            for (Int32 i = 0; i < peakSize; i++)
            {
                Graph.Peak p = peaks[i];
                if (p.GetDiff <= 0)
                {
                    continue;
                }

                output.Add(new Char(GetSubImage(image, new CvRect(p.Left, 0, p.GetDiff, image.Height)),
                                    GetSubImage(plateCopy.image, new CvRect(p.Left, 0, p.GetDiff, image.Height)),
                                    new PositionInPlate(p.Left, p.Right)));
            }

            return(output);
        }
 private IplImage CutTopBottom(IplImage origin, PlateVerticalGraph graph)
 {
     graph.ApplyProbabilityDistributor(new Graph.ProbabilityDistributor(0.0, 0.0, 2, 2));
     Graph.Peak p = graph.FindPeak(3)[0];
     return(GetSubImage(origin, new CvRect(0, p.Left, origin.Width, p.GetDiff)));
 }