Пример #1
0
void run(void)
{
    char win[] = "source";
    int i;
    CvRect rect = { 0, 0, 600, 600 };
    CvMemStorage* storage;
    CvSubdiv2D* subdiv;
    IplImage* img;
    CvScalar active_facet_color, delaunay_color, voronoi_color, bkgnd_color;

    active_facet_color = CV_RGB( 255, 0, 0 );
    delaunay_color  = CV_RGB( 0,0,0);
    voronoi_color = CV_RGB(0, 180, 0);
    bkgnd_color = CV_RGB(255,255,255);

    img = cvCreateImage( cvSize(rect.width,rect.height), 8, 3 );
    cvSet( img, bkgnd_color, 0 );

    cvNamedWindow( win, 1 );

    storage = cvCreateMemStorage(0);
    subdiv = init_delaunay( storage, rect );

    printf("Delaunay triangulation will be build now interactively.\n"
           "To stop the process, press any key\n\n");

    for( i = 0; i < 200; i++ )
    {
        CvPoint2D32f fp = cvPoint2D32f( (float)(rand()%(rect.width-10)+5),
                                        (float)(rand()%(rect.height-10)+5));

        locate_point( subdiv, fp, img, active_facet_color );
        cvShowImage( win, img );

        if( cvWaitKey( 100 ) >= 0 )
            break;

        cvSubdivDelaunay2DInsert( subdiv, fp );
        cvCalcSubdivVoronoi2D( subdiv );
        cvSet( img, bkgnd_color, 0 );
        draw_subdiv( img, subdiv, delaunay_color, voronoi_color );
        cvShowImage( win, img );

        if( cvWaitKey( 100 ) >= 0 )
            break;
    }

    cvSet( img, bkgnd_color, 0 );
    paint_voronoi( subdiv, img );
    cvShowImage( win, img );

    cvWaitKey(0);

    cvReleaseMemStorage( &storage );
    cvReleaseImage(&img);
    cvDestroyWindow( win );
}
Пример #2
0
	int delaunay2( int argc, char** argv )
	{
	    cv::CommandLineParser parser(argc, argv, "{help h||}");
	    if (parser.has("help"))
	    {
	        help();
	        return 0;
	    }
	
	    Scalar active_facet_color(0, 0, 255), delaunay_color(255,255,255);
	    Rect rect(0, 0, 600, 600);
	
	    Subdiv2D subdiv(rect);
	    Mat img(rect.size(), CV_8UC3);
	
	    img = Scalar::all(0);
	    string win = "Delaunay Demo";
	    imshow(win, img);
	
	    for( int i = 0; i < 200; i++ )
	    {
	        Point2f fp( (float)(rand()%(rect.width-10)+5),
	                    (float)(rand()%(rect.height-10)+5));
	
	        locate_point( img, subdiv, fp, active_facet_color );
	        imshow( win, img );
	
	        if( waitKey( 100 ) >= 0 )
	            break;
	
	        subdiv.insert(fp);
	
	        img = Scalar::all(0);
	        draw_subdiv( img, subdiv, delaunay_color );
	        imshow( win, img );
	
	        if( waitKey( 100 ) >= 0 )
	            break;
	    }
	
	    img = Scalar::all(0);
	    paint_voronoi( img, subdiv );
	    imshow( win, img );
	
	    waitKey(0);
	
	    return 0;
	}