static void imageWithProtos_doAllOnAll(ImageWithProtos info, Map protos, O... _) { if (info == null) ret; long time = sysNow(); double minScore = doublePar minScore(_, 95); AOA_CompareImagesToProtos aoa = info.aoa; aoa.addProtos(protos); for (BWImageAndRect s : info.segments) s.bw = toBWImage(bufferedImageClip(info.image, s.rect)); aoa.addImages(iotaKeys_str(collect bw(info.segments))); stepAll(aoa); Map> bestImageForProto = aoa.bestImageForProto; Map> foundProtos1 = filterMapByValuePredicate(bestImageForProto, v -> score(v) >= minScore/100); //print(+foundProtos1); Map foundProtos = ciMap(); for (S proto, Scored scoredImage : foundProtos1) mapPut(foundProtos, proto, getStartingWith1(info.segments, parseInt(scoredImage!))); info.foundProtos = foundProtos; //print('foundProtos, info.foundProtos); optPar ImageSurface isThings; if (isThings != null) isThings.setImage( mergeBWImagesHorizontally(map bwInverted(collect bw(values(info.foundProtos))))); print(mapValues doubleScoreAsIntPercent(bestImageForProto)); if (boolPar printTiming(_)) done2_always("AOA", time); }