elif key == 2:
return self.c
-def gen_corners(d1, d2):
+def gen_corners(d1, d2, min_size):
for c1 in d1.points:
if c1 in d2.points:
continue
c2 = [p for p in d2.points if p in c1.l1.points][0]
c3 = [p for p in d1.points if p in c2.l2.points][0]
c4 = [p for p in d2.points if p in c3.l1.points][0]
+ x_min = min([c1[0], c2[0], c3[0], c4[0]])
+ x_max = max([c1[0], c2[0], c3[0], c4[0]])
+ if x_max - x_min < min_size:
+ continue
+ y_min = min([c1[1], c2[1], c3[1], c4[1]])
+ y_max = max([c1[1], c2[1], c3[1], c4[1]])
+ if y_max - y_min < min_size:
+ continue
+
except IndexError:
continue
# there is not a corresponding intersection
return abs(a * x + b * y + c) / sqrt(a*a+b*b)
def score(lines, points):
+ # TODO find whether the point actualy lies on the line or just in the same
+ # direction
score = 0
for p in points:
s = min(map(lambda l: dst(p, l), lines))
diag2.points = ransac.filter_near(data, diag2, 2)
- grids = list(gen_corners(diag1, diag2))
+ grids = list(gen_corners(diag1, diag2, min(size) / 3))
try:
new_sc, new_grid = min(map(lambda g: (score(sum(g, []), data), g), grids))
image_p = Image.fromstring('RGB', size, buff, 'raw')
do_something(image_p, "color distribution")
- max_s0 = max(s[0] for s in board_raw)
- min_s0 = min(s[0] for s in board_raw)
- norm_s0 = lambda x: (x - min_s0) / (max_s0 - min_s0)
- max_s1 = max(s[1] for s in board_raw)
- min_s1 = min(s[1] for s in board_raw)
- norm_s1 = lambda x: (x - min_s1) / (max_s1 - min_s1)
- max_s1 = max(s[1] for s in board_raw)
- min_s1 = min(s[1] for s in board_raw)
- norm_s1 = lambda x: (x - min_s1) / (max_s1 - min_s1)
- color_data = [(norm_s0(s[0]), norm_s1(s[1])) for s in board_raw]
+ #max_s0 = max(s[0] for s in board_raw)
+ #min_s0 = min(s[0] for s in board_raw)
+ #norm_s0 = lambda x: (x - min_s0) / (max_s0 - min_s0)
+ #max_s1 = max(s[1] for s in board_raw)
+ #min_s1 = min(s[1] for s in board_raw)
+ #norm_s1 = lambda x: (x - min_s1) / (max_s1 - min_s1)
+ #max_s1 = max(s[1] for s in board_raw)
+ #min_s1 = min(s[1] for s in board_raw)
+ #norm_s1 = lambda x: (x - min_s1) / (max_s1 - min_s1)
+ #color_data = [(norm_s0(s[0]), norm_s1(s[1])) for s in board_raw]
+ color_data = [(s[0], s[1]) for s in board_raw]
clusters = k_means.cluster(3, 2,zip(color_data, range(len(color_data))),
[[0., 0.5], [0.5, 0.5], [1., 0.5]])
sum(p[2] for p in points) / norm)
hue, luma, saturation = colorsys.rgb_to_hls(*color)
color = colorsys.hls_to_rgb(hue, 0.5, 1.)
- print color
return luma, saturation, color, hue