Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Problema con Tkinter e SimpleCV
Forum - Python - Problema con Tkinter e SimpleCV

Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 11:29
Giovedì, 11/06/2015
Ciao a tutti,

Sto facendo un programma che dato un colore debba riconoscere se si tratti di un rettangolo o di una circonferenza. Questo è realizzato con SimpleCV.

Per dettare il colore in modo interattivo ho creato tre slider con Tkinter che permettono di modificare il colore tramite la scala RGB

il problema e che non riesco a farli funzionare insieme, poiché quando si esegue la classe degli slider il mainloop di TK non mi permette di eseguire la classe contente il programma di riconoscimento finchè non chiudo la finestra degli slider.

di seguito allego i file. oltre che a includerli di seguito

file : tkprova.py
Codice sorgente - presumibilmente Python

  1. import Tkinter
  2. class Slider ():
  3.         r=0
  4.         g=0
  5.         b=0
  6.  
  7.         def CheckColorRed(self,val):
  8.                 global r,g,b
  9.                 r = val
  10.                 print "Color(",r,",",g,",",b,")\n"
  11.  
  12.         def CheckColorGreen(self,val):
  13.                 global r,g,b
  14.                 g = val
  15.                 print "Color(",r,",",g,",",b,")\n"
  16.  
  17.         def CheckColorBlue(self,val):
  18.                 global r,g,b
  19.                 b = val
  20.                 print "Color(",r,",",g,",",b,")\n"
  21.        
  22.         def __init__(self):
  23.                 self.W = Tkinter.Tk()
  24.                 self.W.title("Color Selector")
  25.                 self.Red = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorRed).pack()
  26.                 self.Green = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorGreen).pack()
  27.                 self.Blue = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorBlue).pack()
  28.                 self.W.mainloop()
  29.  
  30. class RGB_color():
  31.         RED = 0
  32.         GREEN = 0
  33.         BLUE = 0
  34.  
  35.         def __init__(self):
  36.                 global RED,GREEN,BLUE
  37.                 self.color = Slider()
  38.                 RED = self.color.r
  39.                 GREEN = self.color.g
  40.                 BLUE = self.color.b



Codice sorgente - presumibilmente Python

  1. #Detect shapes
  2. import SimpleCV
  3. from tkprova import RGB_color
  4.  
  5. class ShapeDetection ():
  6.  
  7.         def ObjectType(self, option, blobs_s , img ): #riconosce il tipo di figura e lo traccia sullo schermo
  8.               .....
  9.  
  10.         def __init__(self,r,g,b): #passo i colori delle figure che voglio analizzare
  11.                 self.display = SimpleCV.Display()
  12.                 #carico la webcam
  13.                 self.cam = SimpleCV.Camera()
  14.                 self.normaldisplay = True
  15.  
  16.                 while  self.display.isNotDone():
  17.                        
  18.                         #Trova il colore opposto a quello inserito
  19.                         find_color = (r,g,b)  # cerca il colore bianco
  20.                        
  21.                         if self.display.mouseRight:
  22.                                 self.normaldisplay = not(self.normaldisplay)
  23.                                 print "Display Mode:", "Normal" if self.normaldisplay else "Segmented"
  24.                        
  25.                         self.img = self.cam.getImage().flipHorizontal()
  26.                         self.dist = self.img.colorDistance(find_color).dilate(2)
  27.                         self.segmented = self.dist.stretch(230,255)
  28.                         self.blobs = self.segmented.findBlobs()
  29.                         self.blobs1 = self.segmented.findBlobs()
  30.                         self.img.dl().selectFont('Arial')
  31.  
  32.                         self.my_obj = [ "circle", "rectangle"] # elementi da cercare nello schemo
  33.  
  34.                         if self.blobs:
  35.                                 for obj in self.my_obj:
  36.                                         self.ObjectType( obj  , self.blobs, self.img )  #cerca elementi di tipo my_obj
  37.                                
  38.                         if self.normaldisplay: #mostra le immagini da webcam
  39.                                 self.img.show()
  40.                         else:
  41.                                 self.segmented.show() #mostra quello che vede il programma quando analizza l'immagine
  42.  
  43.  
  44. c = RGB_color()
  45. print "ShapeColor :",c.RED,c.GREEN,c.BLUE
  46. ShapeDetection(c.RED,c.GREEN,c.BLUE)



lorenzoscarrone ha allegato un file: ShapeTrack.zip (434367 bytes)
Clicca qui per scaricare il file
PM Quote