void paint_voronoi( CvSubdiv2D* subdiv, IplImage* img ) { CvSeqReader reader; int i, total = subdiv->edges->total; int elem_size = subdiv->edges->elem_size; cvCalcSubdivVoronoi2D( subdiv ); cvStartReadSeq( (CvSeq*)(subdiv->edges), &reader, 0 ); for( i = 0; i < total; i++ ) { CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); if( CV_IS_SET_ELEM( edge )) { CvSubdiv2DEdge e = (CvSubdiv2DEdge)edge; // left draw_subdiv_facet( img, cvSubdiv2DRotateEdge( e, 1 )); // right draw_subdiv_facet( img, cvSubdiv2DRotateEdge( e, 3 )); } CV_NEXT_SEQ_ELEM( elem_size, reader ); } }
CV_IMPL void icvDrawMosaic( CvSubdiv2D * subdiv, IplImage * src, IplImage * dst ) { int i, total = subdiv->edges->total; cvCalcSubdivVoronoi2D( subdiv ); //icvSet( dst, 255 ); for( i = 0; i < total; i++ ) { CvQuadEdge2D *edge = (CvQuadEdge2D *) cvGetSetElem( subdiv->edges, i ); if( edge && CV_IS_SET_ELEM( edge )) { CvSubdiv2DEdge e = (CvSubdiv2DEdge) edge; // left draw_subdiv_facet( subdiv, dst, src, cvSubdiv2DRotateEdge( e, 1 )); // right draw_subdiv_facet( subdiv, dst, src, cvSubdiv2DRotateEdge( e, 3 )); } } }