sbool bwImageSearch_best_verbose; static FoundImg bwImageSearch_best(BWImage big, BWImage pat, float similarity) { new Best best; int wp = pat.getWidth(), hp = pat.getHeight(); int w = big.getWidth(), h = big.getHeight(); float maxError = (1f-similarity)*wp*hp; bigloop: for (int y = 0; y < h-hp; y++) for (int x = 0; x < w-wp; x++) { float diff = bwImageSectionsSimilarity(big, pat, x, y, maxError); if (diff <= maxError && best.isNewBest(-diff)) { maxError = diff; if (bwImageSearch_best_verbose) { float sim = 1-diff/(wp*hp); print(" Image found at " + x + "/" + y + " [sim: " + formatDouble(sim, 4) + "]"); } Rect r = new Rect(x, y, wp, hp); best.put(r, -diff); ping(); if (diff == 0) break bigloop; } } Rect r = best.get(); ret r == null ? null : new FoundImg(r, 1-(-(float) best.bestScore())/(wp*hp)); }