!7 static float scale = 0.25f; // scale image down static BufferedImage img; static L components; static ImageSurface isCutOut; static int iComponent; p-subst { img = loadImage2(#1010143); img = scaleImage(img, scale); MBFImage image = readMBF(img); time "Segment" { components = fhSegment(image); } S n = n(components, "component"); print("Have " + n); setFrameTitle(n, centerFrame(showZoomedImage(renderSegments(image, components), 2))); // Show bounding boxes // showImageWithSelections("Bounding boxes", img, openImajRectanglesToRects(mapMethod('calculateRegularBoundingBox, components))); pnl(md5sOfImageComponents(img, components)); //printStruct(pixelSetBoundsByLine(first(components))); nextImage(); addToWindow(isCutOut, jcenteredbutton("Next", f nextImage)); // Compare with my own segmenter // showAutoSegmentedImage(new RGBImage(img)); } svoid nextImage { isCutOut = packFrameInTopRightCorner(showZoomedImage(isCutOut, cutOutPixelSet(img, components.get(iComponent)), "Cut out " + (iComponent+1) + "/" + l(components))); iComponent = mod(iComponent+1, l(components)); }