fix bug in gridf2
authorTomas Musil <tomik.musil@gmail.com>
Tue, 1 Jul 2014 19:32:55 +0000 (21:32 +0200)
committerTomas Musil <tomik.musil@gmail.com>
Tue, 1 Jul 2014 19:32:55 +0000 (21:32 +0200)
src/gridf2.py
src/intrsc.py
test/errors.py [new file with mode: 0755]
test/html_results.py [changed mode: 0644->0755]

index ce50be7..4f276fd 100644 (file)
@@ -29,7 +29,6 @@ def nearest(lines, point):
 def nearest2(lines, point):
     return min(map(lambda l: dst(point, points_to_line(*l)), lines))
 
 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]:
 
 def generate_models(sgrid, lh):
     for f in [0, 1, 2, 3, 5, 7, 8, 11, 15, 17]:
@@ -68,6 +67,7 @@ def test():
     import matplotlib.pyplot as pyplot
     import time
 
     import matplotlib.pyplot as pyplot
     import time
 
+    size = (520, 390)
     points = pickle.load(open('edges.pickle'))
 
     lines = pickle.load(open('lines.pickle'))
     points = pickle.load(open('edges.pickle'))
 
     lines = pickle.load(open('lines.pickle'))
@@ -134,11 +134,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) 
         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))
         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
 
         if sc1_n < sc1:
             sc1, gridv = sc1_n, gridv_n
 
@@ -147,11 +147,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) 
         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))
         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)
         if sc2_n < sc2:
             sc2, gridh = sc2_n, gridh_n
     gridv, gridh = lines2grid(gridv, gridh), lines2grid(gridh, gridv)
index 355468c..6f78f8d 100644 (file)
@@ -162,6 +162,8 @@ def stone_color_raw(image, (x, y)):
             except IndexError:
                 pass
     norm = float(len(points))
             except IndexError:
                 pass
     norm = float(len(points))
+    if norm == 0:
+        return 0, 0, 0 #TODO trow exception here
     color = (sum(p[0] for p in points) / norm,
              sum(p[1] for p in points) / norm,
              sum(p[2] for p in points) / norm)
     color = (sum(p[0] for p in points) / norm,
              sum(p[1] for p in points) / norm,
              sum(p[2] for p in points) / norm)
diff --git a/test/errors.py b/test/errors.py
new file mode 100755 (executable)
index 0000000..d5dc73c
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+
+import sys
+import pickle
+
+res = pickle.load(open(sys.argv[1], 'r'))
+
+for (name, time, output, error, r_code) in res:
+    if r_code > 0:
+        print error
old mode 100644 (file)
new mode 100755 (executable)