import im_debug
import linef
+import manual
def main():
"""Main function of the program."""
help="image to analyse")
parser.add_argument('-w', type=int, default=640,
help="scale image to the specified width before analysis")
+ parser.add_argument('-m', '--manual', dest='manual_mode', action='store_true',
+ help="manual grid selection")
parser.add_argument('-d', '--debug', dest='show_all', action='store_true',
help="show every step of the computation")
parser.add_argument('-s', '--save', dest='saving', action='store_true',
if args.saving:
do_something = imsave("saved/" + args.file[0][:-4] + "_" +
str(image.size[0]) + "/").save
-
- lines = linef.find_lines(image, show_all, do_something, verbose)
+
+ if args.manual_mode:
+ try:
+ lines = manual.find_lines(image)
+ except manual.UserQuitError:
+ #TODO ask user to try again
+ return 1
+ else:
+ lines = linef.find_lines(image, show_all, do_something, verbose)
intersections = intersections_from_angl_dist(lines, image.size)
image_g = image.copy()
--- /dev/null
+"""Manual grid selection module"""
+
+import pygame
+import Image, ImageDraw
+
+class UserQuitError(Exception):
+ pass
+
+class Screen:
+ def __init__(self, res):
+ pygame.init()
+ pygame.display.set_mode(res)
+ pygame.display.set_caption("Go image capture")
+ self._screen = pygame.display.get_surface()
+
+ def display_picture(self, im):
+ pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode)
+ self._screen.blit(pg_img, (0,0))
+ pygame.display.flip()
+
+def find_lines(im_orig):
+
+ im = im_orig.copy()
+
+ screen = Screen(im.size)
+
+ done = False
+ clock = pygame.time.Clock()
+ draw = ImageDraw.Draw(im)
+ corners = []
+ color=(64, 64, 255)
+ line_width = 2
+ while not done:
+ for event in pygame.event.get():
+ if event.type == pygame.QUIT:
+ pygame.quit()
+ raise UserQuitError
+ if event.type == pygame.MOUSEBUTTONDOWN:
+ if len(corners) >= 4:
+ corners = []
+ im = im_orig.copy()
+ draw = ImageDraw.Draw(im)
+
+ if len(corners) < 4:
+ corners.append(pygame.mouse.get_pos())
+ draw.point(corners[:-1], fill=color)
+ if len(corners) == 4:
+ draw.line((corners[0], corners[1]), fill=color,
+ width=line_width)
+ draw.line((corners[1], corners[2]), fill=color,
+ width=line_width)
+ draw.line((corners[2], corners[3]), fill=color,
+ width=line_width)
+ draw.line((corners[3], corners[0]), fill=color,
+ width=line_width)
+ screen.display_picture(im)
+ clock.tick(15)