package cx.prutser.sudoku.ocr; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; /** */ public class MassTester { private List<String> files = null; public MassTester(String... args) { parseArgs(args); } private void run() { for (String filename : files) { try { BufferedImage bi = ImageIO.read(new File(filename)); Pair<Integer, Integer> pos = OCRUtils.centerOfMass(OCRUtils.getPixels(bi), bi.getWidth(), bi.getHeight(), true); System.out.println(filename + ": " + pos); } catch (IOException e) { System.err.println("Error reading file " + filename + ": " + e.getMessage()); } } } public static void main(String... args) { new MassTester(args).run(); } private void parseArgs(String... args) { final String usage = "Usage: java " + getClass().getName() + " [OPTIONS] file1 file2...\n" + "\n" + "Tester application for the OCR engine. Takes a list of images and tries\n" + "to recognize their digit value.\n" + "Images must be 8-bit gray scale in 16x16 resolution and png format.\n" + "\n" + "OPTIONS\n" + " -h, --help print this help message and exit."; boolean exit = false; try { for (int i = 0; !exit && i < args.length; i++) { if("-h".equals(args[i]) || "--help".equals(args[i])) { exit = true; } else { files = Arrays.asList(args).subList(i, args.length); break; } } } catch(ArrayIndexOutOfBoundsException e) { exit = true; } if (exit) { System.err.println(usage); System.exit(1); } } }