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; } }
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; }