diff options
author | Alan Aguiar <alanjas@hotmail.com> | 2012-10-23 10:05:17 (GMT) |
---|---|---|
committer | Alan Aguiar <alanjas@hotmail.com> | 2012-10-23 10:05:17 (GMT) |
commit | ef8d0d0f2a63c3cb1edae57e95f2cb6a4d5b0b65 (patch) | |
tree | fe24b614a3d802afb995fb1afda2506461d6c87a | |
parent | 3e05094fce72957b907dabd25842aeff143c7831 (diff) |
some fixes, now works again
-rwxr-xr-x | activity.py | 54 | ||||
-rwxr-xr-x | followme.py | 37 | ||||
-rwxr-xr-x | main.py | 35 |
3 files changed, 88 insertions, 38 deletions
diff --git a/activity.py b/activity.py index 88d4e91..9b6fdaf 100755 --- a/activity.py +++ b/activity.py @@ -55,6 +55,8 @@ class Activity(activity.Activity): self.show_capture = True self.calibrating = True self.use_threshold_view = True + self.use_outline_view = True + self.use_rects_view = True self.mode = 'RGB' self.followme_activity = main.Main(self) @@ -353,7 +355,7 @@ class Activity(activity.Activity): item3 = gtk.ToolItem() label3 = gtk.Label() - label3.set_text(_('Show threshold view')) + label3.set_text(_('Threshold view')) item3.add(label3) barra_colors.insert(item3, -1) @@ -362,6 +364,36 @@ class Activity(activity.Activity): threshold_view.set_tooltip(_('Yes')) barra_colors.insert(threshold_view, -1) + separator3 = gtk.SeparatorToolItem() + separator3.props.draw = True + barra_colors.insert(separator3, -1) + + item4 = gtk.ToolItem() + label4 = gtk.Label() + label4.set_text(_('Outline')) + item4.add(label4) + barra_colors.insert(item4, -1) + + outline_view = ToolButton('media-playback-stop') + outline_view.connect('clicked', self.outline_view) + outline_view.set_tooltip(_('Yes')) + barra_colors.insert(outline_view, -1) + + separator4 = gtk.SeparatorToolItem() + separator4.props.draw = True + barra_colors.insert(separator4, -1) + + item5 = gtk.ToolItem() + label5 = gtk.Label() + label5.set_text(_('Rects')) + item5.add(label5) + barra_colors.insert(item5, -1) + + rects_view = ToolButton('media-playback-stop') + rects_view.connect('clicked', self.rects_view) + rects_view.set_tooltip(_('Yes')) + barra_colors.insert(rects_view, -1) + barra_colors.show_all() colors_button = ToolbarButton(label=_('Colors'), page=barra_colors, @@ -410,6 +442,26 @@ class Activity(activity.Activity): button.set_icon('media-playback-stop') button.set_tooltip(_('No')) + def outline_view(self, button): + self.use_outline_view = not self.use_outline_view + self.followme_activity.put_outline_view(self.use_outline_view) + if not self.use_outline_view: + button.set_icon('media-playback-start') + button.set_tooltip(_('Yes')) + else: + button.set_icon('media-playback-stop') + button.set_tooltip(_('No')) + + def rects_view(self, button): + self.use_rects_view = not self.use_rects_view + self.followme_activity.put_rects_view(self.use_rects_view) + if not self.use_rects_view: + button.set_icon('media-playback-start') + button.set_tooltip(_('Yes')) + else: + button.set_icon('media-playback-stop') + button.set_tooltip(_('No')) + def put_color(self, color): self.colorC = color self.red_spin.props.value = self.colorC[0] diff --git a/followme.py b/followme.py index a288a29..c1833d1 100755 --- a/followme.py +++ b/followme.py @@ -33,7 +33,7 @@ from gettext import gettext as _ class FollowMe(object): - def __init__(self, mode, parent): + def __init__(self, parent): pygame.init() pygame.camera.init() @@ -42,19 +42,17 @@ class FollowMe(object): else: self.display = pygame.display.set_mode((1200, 900)) self.use_threshold_view = True + self.use_outline_view = True + self.use_rects_view = True self.tamanioc = (320, 240) self.brightness = 128 self.cam = None - self.get_camera(mode) + self.get_camera() self.calc((960, 720)) self.show_grid = False - def get_camera(self, mode): - if self.cam: - try: - self.cam.stop() - except: - print _('Error in stop camera') + def get_camera(self, mode='RGB'): + self.stop_camera() self.lcamaras = pygame.camera.list_cameras() if self.lcamaras: self.cam = pygame.camera.Camera(self.lcamaras[0], self.tamanioc, mode) @@ -70,6 +68,14 @@ class FollowMe(object): else: print _('No cameras was found') + def stop_camera(self): + if self.cam: + try: + self.cam.stop() + self.cam = None + except: + print _('Error in stop camera') + def set_camera_flags(self): self.cam.set_controls(True, False, self.brightness) res = self.cam.get_controls() @@ -130,20 +136,15 @@ class FollowMe(object): return conexa - def show_position(self): - + def generate_capture_to_show(self): if self.use_threshold_view: self.captura_to_show = pygame.transform.scale(self.captura_aux, (int(self.show_size[0]), int(self.show_size[1]))) else: self.captura_to_show = pygame.transform.scale(self.captura, (int(self.show_size[0]), int(self.show_size[1]))) - def show_position2(self, mask, color): - + def show_centroid_position(self, mask): x, y = mask.centroid() - pygame.draw.rect(self.captura_to_show, (255,0,0), (x*self.c1, y*self.c2, 20, 20), 16) - self.show_outline(mask) - self.show_rects(mask) def show_outline(self, mask): points = mask.outline() @@ -155,13 +156,11 @@ class FollowMe(object): for r in rects: pygame.draw.rect(self.captura_to_show, (0,255,0), (r[0]*self.c1, r[1]*self.c2, r[2]*self.c1, r[3]*self.c2), 5) - def show_position3(self, color): + def show_in_screen(self, color): self.display.fill((84,185,72)) - if (self.show_grid == True): self.draw_grid() self.display.blit(self.captura_to_show, (self.xblit, self.yblit)) - #self.display.fill(color, (0,0,120,120)) pygame.draw.rect(self.display, (0,0,0), (0,0,120,120), 4) def draw_grid(self): @@ -181,5 +180,3 @@ class FollowMe(object): self.display.fill((84, 185, 72)) - - @@ -78,6 +78,12 @@ class Main: def put_threshold_view(self, view): self.c.use_threshold_view = view + def put_outline_view(self, outline): + self.c.use_outline_view = outline + + def put_rects_view(self, rects): + self.c.use_rects_view = rects + def put_brightness(self, brightness): self.c.brightness = brightness self.c.set_camera_flags() @@ -90,16 +96,13 @@ class Main: self.show_size = (960, 720) self.show = True self.mode = 'RGB' - self.c = FollowMe(self.mode, self.parent) + self.c = FollowMe(self.parent) if (self.c.cam == None): while gtk.events_pending(): gtk.main_iteration() for event in pygame.event.get(): if event.type == pygame.QUIT: - # salgo break - #elif event.type == pygame.VIDEORESIZE: - # pygame.display.set_mode(event.size, pygame.RESIZABLE) else: run = True while run: @@ -108,36 +111,34 @@ class Main: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False - #elif event.type == pygame.VIDEORESIZE: - # pygame.display.set_mode(event.size, pygame.RESIZABLE) if (self.calibrating): self.colorC = self.c.calibrate() if self.parent: self.parent.put_color(self.colorC) else: - pos = self.c.get_position(self.colorC, self.threshold, self.pixels) - self.c.show_position() - if self.show and not(pos == -1): - #for p in pos: - self.c.show_position2(pos, self.colorC) - self.c.show_position3(self.colorC) + mask = self.c.get_position(self.colorC, self.threshold, self.pixels) + self.c.generate_capture_to_show() + if self.show: + self.c.show_centroid_position(mask) + if self.c.use_outline_view: + self.c.show_outline(mask) + if self.c.use_rects_view: + self.c.show_rects(mask) + self.c.show_in_screen(self.colorC) if (self.r != None and self.r.modules != []): self.r.move_robot(pos) pygame.display.flip() self.clock.tick(10) + self.c.stop_camera() + if self.r: if self.r.butia: self.r.butia.close() self.r.butia.closeService() if self.r.bobot: self.r.bobot.kill() - if self.c.cam: - try: - self.cam.stop() - except: - pass |