if __name__ == "__main__":
    args = parse_args()
    grid = Image.open(args.image)
    cell_w, cell_h = dims.celldims(grid.size, args.rows, args.cols)
    answer = []

    gold = yaml.load(open(args.gold))
    for name, mean_img in gold.items():
        if 'path' in mean_img:
            gold[name] = Image.open(mean_img['path'])
        else:
            gold[name] = Image.open(mean_img)
        if args.split:
            gold[name] = as_black_and_white(gold[name], args.split, contrast=True)

    class_errs = [[gold_classify(gold,
                grid.crop(bounding_box(
                    j * cell_w, i * cell_h, cell_w, cell_h)))
                    for j in range(args.cols)] for i in range(args.rows)]

    output = [[min(class_errs[i][j])[1] for j in range(args.cols)] for i in range(args.rows)]

    map_list = []
    if args.intended_csv:
        diff = 0
        with open(args.intended_csv) as f:
            intended = csv.reader(f)
            for answer, guess in zip(intended, output):
                map_list.append(answer)
if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('mean_file_yml')
    parser.add_argument('output')
    parser.add_argument('-split', type=int)
    args = parser.parse_args()
    meta_data = yaml.load(open(args.mean_file_yml))
    rows = 0
    max_w = 0
    max_h = 0
    for name, data in meta_data.items():
        rows += 1
        data['image'] = Image.open(data['path'])
        data['template'] = Image.open(data['template_path'])
        if args.split:
            data['image'] = as_black_and_white(data['image'], args.split, contrast=True)
            data['template'] = as_black_and_white(data['template'], args.split, contrast=True)
        max_w = max(max_w, data['template'].size[0])
        max_h = max(max_h, data['template'].size[1])
        max_w = max(max_w, data['image'].size[0])
        max_h = max(max_h, data['image'].size[1])

    width = max_w * 2
    height = rows * max_h
    pad = 5
    out = Image.new('RGBA', (width + 2 * pad, height + 2 * pad), "white")

    for i, (name, data) in enumerate(meta_data.items()):
        out.paste(data['template'], bb(pad, pad + i * max_h, max_w, max_h))
        out.paste(data['image'], bb(max_w + pad, pad + i * max_h, max_w, max_h))
def cal_align(image):
    image = black_and_white.as_black_and_white(image)
    black = pixel_distribution.black_points(image)
    return pixel_distribution.stats(black)