!7 cmodule VectorLiveRecogSpike2 > DynImageSurfaceAndEnabled { switchable int w = 64; switchable S prototypeImageID = #1102893; transient ReliableSingleThread rstRecog = dm_rst(this, r recognize); start { set zoomToWindowOnSetImage; rstRecog.trigger(); dm_vmBus_onMessage haveVectorImage((mod, _img) -> rstRecog.trigger()); } afterVisualize { imageSurface_pixelated(imageSurface); } void recognize { if (!enabled) ret; BufferedImage inputImage = dm_getLatestVectorImage(); BWImage big = bwResizeSmooth(w, inputImage); BWImage pat = bwResizeSmooth(w/3, loadBWImage(prototypeImageID)); time "Fold Recog" { BWImage fold = bwFoldImage(big, pat); BWImage fold2 = bwBlackBorder(pat.getWidth()/2.0, pat.getHeight()/2.0, bwLocalMaximaFilter_autoContrast(fold)); //showPixelatedZoomedImage(8, fold2); //L l = listOfBrightestPixels(5, fold2); //print(l); Pt p = brightestPixel(fold2); } BWImage fold3 = bwBlackBorder(pat.getWidth()/2.0, pat.getHeight()/2.0, bwAutoContrast(fold)); RGBImage rgb = toRGBImage(mergeBWImagesHorizontally(big, fold3)); setImage(rgbMarkPoints(rgb, p)); //setSelection(bestInInputSpace!); } }