!7 cmodule AutoChessBoardRecognizer > ChessOCR_DynChessBoardRecognizer { new L seedSegmenters; new MRUAndAllTimeTop chest; new Map bestSegmenterForImage; // key: image MD5 new L lastImagesLookedAt; // image MD5 srecord Result(ParameterizedSegmenter segmenter, Rect boardPosition, double score, S fen) {} JComponent segmenterSection() { ret dm_calculatedCenteredLabel(() -> "Treasure chest size: " + l(chest) + ", " + n2(bestSegmenterForImage, "image result") + ", " + n2(lastImagesLookedAt, "last image")); } Iterator makeSegmenters() { if (empty(seedSegmenters)) { print("Loading seed segmenters"); Cl presets = agiBlue_chessBoardSegmenterPresetNames(); for ping (S preset : presets) seedSegmenters.add(parameterizedSegmenterFromAGIBlue(preset)); chest.addAll(seedSegmenters); } ret chest.mixedIterator(); } }