void computeCentroidBlob(const vpImage<unsigned char> &I,vpDot2 &blob,vpImagePoint &cog,bool &init_done )
{
    try
    {
        if (! init_done)
        {
            vpImagePoint germ;
            vpDisplay::displayCharString(I, vpImagePoint(10,10), "Click in the blob to initialize the tracker", vpColor::red);
            if (vpDisplay::getClick(I, germ, false))
            {
                blob.initTracking(I, germ);
                blob.track(I);
                cog = blob.getCog();
                init_done = true;
            }
        }
        else
        {
            blob.track(I);
            cog = blob.getCog();

        }

        std::cout << "init done: " << init_done << std::endl;
    }

    catch(...)
    {
        init_done = false;
    }

}
Exemplo n.º 2
0
static int blob_process(uint8_t* frame, int width, int height, int size)
{
	init_display(width, height);

	if (!initialized || process_changed) {
		blob.setGraphics(true);
		blob.setGraphicsThickness(2);
		initialized = true;
		process_changed = false;
	}

	prepare_display(frame, width, height, size);

	//compute blob
	if (!init_track) {
		blob.initTracking(*grey_img, germ);
		init_track = true;
	}
	else {
		blob.track(*grey_img);
	}

	int bat = jakopter_com_read_int(com_in, 0);
	std::ostringstream bat_str;
	bat_str << bat;
	vpDisplay::displayText(*display_img, (int)display_img->getHeight()-25, 10,
		"Battery : " + bat_str.str() + " %%", vpColor::red);

	vpDisplay::flush(*display_img);
	return 0;
}