!7 replace Finder with F1. p-exp { L files = markedEyebrowsFiles(); final FaceFinderByPictures1 faceFinder = defaultFaceFinderByPictures(); L images = map(markedEyebrowsFiles(), func(File f) -> RGBImageRectAndState { RGBImage full = loadRGBImage(f); Rect face = faceFinder.get(full); ret RGBImageRectAndState(rgbClip(full, face), clipRect((Rect) unstruct(getFileInfoField(f, "Eyebrow position")), face), getFileInfoField(f, "Eyebrow state")); }); F1 dummyFaceFinder = func(RGBImage img) -> Rect { rgbBounds(img) }; showRGBImageAndRects(images); int w = 32; // face is resized to this width int limit = 95; // search for smallest finder with at least 95% accuracy EyebrowFinder1 finder = new(dummyFaceFinder, w, map(images, func(RGBImageRectAndState image) -> Pair { pair(image.image, image.state) })); saveTextFileVerbose(javaxDataDir("Eyebrow Finder/full-finder.struct"), struct(finder)); new Best best; video_scoreRectAndState_step(best, images, finder); showImage(mergeRGBImagesAndRects(callEyebrowFinder(finder, rgbImageAndRects_images(images)))); }