!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_withCorners(big, pat); BWImage fold2 = bwLocalMaximaFilter_autoContrast(fold); //showPixelatedZoomedImage(8, fold2); //L l = listOfBrightestPixels(5, fold2); //print(l); Pt pInFoldImage = brightestPixel(fold2); Pt p = translatePt(-pat.getWidth(), -pat.getHeight(), pInFoldImage); } RGBImage rgbBig = rgbMarkPoints(toRGBImage(big), p); setImage(mergeRGBImagesHorizontally(rgbBig, toRGBImage(fold2))); //setSelection(bestInInputSpace!); } }