Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="img"></param>
        /// <param name="edge"></param>
        private void DrawSubdivFacet(IplImage img, CvSubdiv2DEdge edge)
        {
            CvSubdiv2DEdge t     = edge;
            int            count = 0;

            // count number of edges in facet
            do
            {
                count++;
                t = t.GetEdge(CvNextEdgeType.NextAroundLeft);
            } while (t != edge);

            CvPoint[] buf = new CvPoint[count];

            // gather points
            t = edge;
            int i;

            for (i = 0; i < count; i++)
            {
                CvSubdiv2DPoint pt = t.Org();
                if (pt == null)
                {
                    break;
                }
                buf[i] = pt.Pt;
                t      = t.GetEdge(CvNextEdgeType.NextAroundLeft);
            }

            if (i == count)
            {
                Random          rand = new Random();
                CvSubdiv2DPoint pt   = edge.RotateEdge(RotateEdgeFlag.Rotate).Dst();
                img.FillConvexPoly(buf, CvColor.Random(), LineType.AntiAlias, 0);
                img.PolyLine(new CvPoint[][] { buf }, true, CvColor.Black, 1, LineType.AntiAlias, 0);
                DrawSubdivPoint(img, pt.Pt, CvColor.Black);
            }
        }