void run(){ static FPSLimiter fps(pa("-maxfps"),10); gui["image"] = grabber.grab(); gui["fps"].render(); fps.wait(); }
void update(){ static Mutex mutex; Mutex::Locker l(mutex); static ImageHandle image = gui["image"]; static ImageHandle imageOut = gui["imageOut"]; int filterSize = gui["filterSize"]; int difference = gui["difference"]; if(gui["disableCL"]){ smoothing->setUseCL(true); }else{ smoothing->setUseCL(false); } static ImgBase *dst = 0; const ImgBase *src = grabber.grab(); smoothing->setFilterSize(filterSize); smoothing->setDifference(difference); Time startT, endT; startT = Time::now(); smoothing->apply(src, &dst); endT = Time::now(); if(smoothing->isCLActive()){ std::cout <<"OpenCL :"<< (endT-startT).toMilliSeconds() <<" ms" << endl; }else{ std::cout << "CPU :" << (endT - startT).toMilliSeconds() << " ms" << endl; } imageOut = dst; image = src; }
void step(){ Mutex::Locker lock(mtex); static DrawHandle orig = gui["orig"]; static ImageHandle prev = gui["prev"]; static ButtonHandle next = gui["next"]; static LabelHandle time = gui["time"]; static ComboHandle algorithm = gui["algorithm"]; static FPSHandle fps = gui["fps"]; bool loop = gui["loop"]; bool clipToROI = gui["clipToROI"]; int masksize = gui["masksize"]; float threshold = gui["threshold"]; float gamma = gui["gamma"]; gui["save"].registerCallback(save); ltop.setClipToROI(clipToROI); ltop.setup(masksize, threshold, (LocalThresholdOp::algorithm)(int)algorithm, gamma); static const ImgBase *image = 0; if(!image || loop || next.wasTriggered()){ bool init = !image; image = grabber.grab(); if(init){ selroi[0]=selroi[2]=image->getImageRect(); } } const ImgBase *useImage = image; if(selroi[1] != image->getImageRect()){ useImage = useImage->shallowCopy(selroi[1]); } Time last = Time::now(); const ImgBase *result = ltop.apply(useImage); time = str((Time::now()-last).toMilliSeconds())+"ms"; orig = image; if(image != useImage){ delete useImage; } if(selroi[0] != Rect::null){ orig->color(0,100,255); orig->fill(0,100,255,20); orig->rect(selroi[0]); } orig->color(255,0,0); orig->nofill(); orig->rect(selroi[1]); orig.render(); prev = result; fps.render(); }
void myrun(){ static GenericGrabber grabber(FROM_PROGARG("-input")); grabber.setDesiredDepth(depth8u); const Img8u &image = *grabber.grab()->asImg<icl8u>(); const Img8u &tImage = thresh(image,gui.getValue<int>("t")); gui.getValue<ImageHandle>("myimage") = tImage; gui.getValue<ImageHandle>("myimage").update(); Thread::msleep(10); }
void run(){ DrawHandle draw = gui["image"]; const ImgBase *I = grabber.grab(); draw = I; std::vector<ImageRegion> rs = rd.detect(cd.apply(I)); for(size_t i=0;i<rs.size();++i){ draw->linestrip(rs[i].getBoundary()); } draw->render(); }
void init(){ grabber.init(pa("-i")); bool c_arg = pa("-c"); gui << Draw().handle("draw").label("input image") << Image().handle("cropped").label("cropped") << ( VBox().maxSize(c_arg ? 0 : 12,99).minSize(c_arg ? 0 : 12,1) << Button("save as ..").handle("saveAs") << Button("overwrite input").handle("overwrite") << Combo("0,90,180,270").handle("rot").label("rotation") << CheckBox("rectangular",!pa("-r")).handle("rect") << Button("Batch crop...").handle("batch") << ( HBox().label("rectification size") << Spinner(1,4096,640).handle("s1") << Label(":") << Spinner(1,4096,480).handle("s2") ) << (HBox() << Fps().handle("fps") << CamCfg() ) ) << Show(); if(!c_arg){ gui["batch"].registerCallback(batch_crop); } const ImgBase *image = grabber.grab(); if(!c_arg){ mouse_1 = new Mouse1(image->getSize()); gui["draw"].install(mouse_1); } mouse_2 = new Mouse2(image->getSize()); gui["draw"].install(mouse_2); DrawHandle draw = gui["draw"]; draw->setImageInfoIndicatorEnabled(false); if(!c_arg){ gui["rect"].registerCallback(rectangular_changed); rectangular_changed(); if(*pa("-i",0) != "file" || FileList(*pa("-i",1)).size() != 1){ gui["overwrite"].disable(); }else{ gui["overwrite"].registerCallback(overwrite); } gui["saveAs"].registerCallback(save_as); } }
void batch_mode(){ if(pa("-config")){ ConfigFile f(*pa("-config")); int masksize = f["config.masksize"]; int thresh = f["config.threshold"]; float gamma = f["config.gammaslope"]; if(!pa("-output")){ printf("please specify output file pattern\n"); return; } grabber.init(pa("-i")); FileList fl; int maxSteps = -1; if(grabber.getType() == "file"){ fl = FileList(*pa("-input",1)); maxSteps = fl.size(); } static FileWriter w(*pa("-output")); static LocalThresholdOp t; t.setMaskSize(masksize); t.setGlobalThreshold(thresh); t.setGammaSlope(gamma); int i=0; while(maxSteps < 0 || maxSteps--){ if(maxSteps > 0){ printf("processing image %30s ......",fl[i++].c_str()); } const ImgBase *image = grabber.grab(); if(image->getFormat() != formatGray){ printf("..."); static ImgBase *grayImage = 0; ensureCompatible(&grayImage,depth8u,image->getSize(),formatGray); cc(image,grayImage); printf("..."); image = grayImage; } static ImgBase *dst = 0; printf("..."); t.apply(image,&dst); printf("..."); w.write(dst); printf("done! \n"); printf("writing image to %30s ... done\n",w.getFilenameGenerator().showNext().c_str()); } }else{ ERROR_LOG("please run with -config config-filename!"); return; } }
void run() { const ImgBase* img = grabber.grab(); switch(img->getDepth()) { case(core::depth8u): { grab_cb<icl8u>(img); break; } case(core::depth32f): { grab_cb<icl32f>(img); break; } default: break; } gui["fps"].render(); }
void run(){ bool c_arg = pa("-c"); static FPSLimiter fpsLimit(30); fpsLimit.wait(); const ImgBase *image = grabber.grab(); DrawHandle draw = gui["draw"]; ImageHandle cropped = gui["cropped"]; draw = image; static RotateOp rot; if(c_arg){ rot.setAngle(0); }else{ rot.setAngle(parse<int>(gui["rot"])); } const ImgBase *cro = 0; if(c_arg || gui["rect"].as<bool>()){ static Img8u roi; std::vector<utils::Rect> rs = mouse_2->getRects(); ICLASSERT_THROW(rs.size() == 1, ICLException("expected exactly one rectangle")); lastRect = rs[0]; mouse_2->visualize(**draw); SmartPtr<const ImgBase> tmp = image->shallowCopy(rs[0] & image->getImageRect()); roi.setChannels(tmp->getChannels()); roi.setFormat(tmp->getFormat()); roi.setSize(tmp->getROISize()); tmp->convertROI(&roi); cro = rot.apply(&roi); draw->color(0,255,0,255); draw->text(str(rs[0]), rs[0].x, rs[0].y); }else{ draw->draw(mouse_1->vis()); Size32f s(gui["s1"],gui["s2"]); Point32f ps[4] = { mouse_1->ps[0], mouse_1->ps[1], mouse_1->ps[2], mouse_1->ps[3] }; switch(image->getDepth()){ #define ICL_INSTANTIATE_DEPTH(D) \ case depth##D:{ \ static ImageRectification<icl##D> ir; \ try{ \ cro = rot.apply(&ir.apply(ps,*image->as##D(),s)); \ }catch(...){} \ break; \ } ICL_INSTANTIATE_ALL_DEPTHS; #undef ICL_INSTANTIATE_DEPTH } } if(cro){ cropped = cro; currMutex.lock(); cro->convert(&curr); currMutex.unlock(); } gui["draw"].render(); gui["fps"].render(); }