X-Git-Url: http://git.tomasm.cz/imago.git/blobdiff_plain/adb3df32314977f59a091897da1f826662853f87..92f288e8b33a67060a4553d8e71d618038885bf9:/src/gridf2.py?ds=sidebyside diff --git a/src/gridf2.py b/src/gridf2.py index ce50be7..8e6936a 100644 --- a/src/gridf2.py +++ b/src/gridf2.py @@ -29,11 +29,13 @@ def nearest(lines, point): def nearest2(lines, point): return min(map(lambda l: dst(point, points_to_line(*l)), lines)) -size = (520, 390) def generate_models(sgrid, lh): for f in [0, 1, 2, 3, 5, 7, 8, 11, 15, 17]: - grid = gm.fill(sgrid[0], sgrid[1], lh , f) + try: + grid = gm.fill(sgrid[0], sgrid[1], lh , f) + except ZeroDivisionError: + continue grid = [sgrid[0]] + grid + [sgrid[1]] for s in xrange(17 - f): grid = [gm.expand_left(grid, lh)] + grid @@ -68,6 +70,7 @@ def test(): import matplotlib.pyplot as pyplot import time + size = (520, 390) points = pickle.load(open('edges.pickle')) lines = pickle.load(open('lines.pickle')) @@ -134,11 +137,11 @@ def find(lines, size, l1, l2, bounds, hough, show_all, do_something, logger): l1s = random.sample(l1, 2) l1s.sort(key=lambda l: l[1]) sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l1s) - middle = lambda m: ((m, 0),(m, 390)) + middle = lambda m: ((m, 0),(m, size[1])) middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), (sgrid[0][1], sgrid[1][0]))[0]) lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle)) - sc1_n, gridv_n = min(map(lambda g: (score(g, l1, 210), g), generate_models(sgrid, lh))) + sc1_n, gridv_n = min(map(lambda g: (score(g, l1, size[1] / 2 + 15), g), generate_models(sgrid, lh))) if sc1_n < sc1: sc1, gridv = sc1_n, gridv_n @@ -147,11 +150,11 @@ def find(lines, size, l1, l2, bounds, hough, show_all, do_something, logger): l2s = random.sample(l2, 2) l2s.sort(key=lambda l: l[1]) sgrid = map(lambda l:linef.line_from_angl_dist(l, size), l2s) - middle = lambda m: ((0, m),(520, m)) + middle = lambda m: ((0, m),(size[0], m)) middle = middle(gm.intersection((sgrid[0][0], sgrid[1][1]), (sgrid[0][1], sgrid[1][0]))[1]) lh = (gm.intersection(sgrid[0], middle), gm.intersection(sgrid[1], middle)) - sc2_n, gridh_n = min(map(lambda g: (score(g, l2, 275), g), generate_models(sgrid, lh))) + sc2_n, gridh_n = min(map(lambda g: (score(g, l2, size[0] / 2 + 15), g), generate_models(sgrid, lh))) if sc2_n < sc2: sc2, gridh = sc2_n, gridh_n gridv, gridh = lines2grid(gridv, gridh), lines2grid(gridh, gridv)