lorenzoscarrone (Normal User)
Pro
Messaggi: 92
Iscritto: 16/11/2011
|
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 |
import Tkinter class Slider (): r=0 g=0 b=0 def CheckColorRed(self,val): global r,g,b r = val print "Color(",r,",",g,",",b,")\n" def CheckColorGreen(self,val): global r,g,b g = val print "Color(",r,",",g,",",b,")\n" def CheckColorBlue(self,val): global r,g,b b = val print "Color(",r,",",g,",",b,")\n" def __init__(self): self.W = Tkinter.Tk() self.W.title("Color Selector") self.Red = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorRed).pack() self.Green = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorGreen).pack() self.Blue = Tkinter.Scale(self.W, orient= Tkinter.HORIZONTAL, from_=0, to=255, tickinterval=30, length=300, command=self.CheckColorBlue).pack() self.W.mainloop() class RGB_color(): RED = 0 GREEN = 0 BLUE = 0 def __init__(self): global RED,GREEN,BLUE self.color = Slider() RED = self.color.r GREEN = self.color.g BLUE = self.color.b
|
Codice sorgente - presumibilmente Python |
#Detect shapes import SimpleCV from tkprova import RGB_color class ShapeDetection (): def ObjectType(self, option, blobs_s , img ): #riconosce il tipo di figura e lo traccia sullo schermo ..... def __init__(self,r,g,b): #passo i colori delle figure che voglio analizzare self.display = SimpleCV.Display() #carico la webcam self.cam = SimpleCV.Camera() self.normaldisplay = True while self.display.isNotDone(): #Trova il colore opposto a quello inserito find_color = (r,g,b) # cerca il colore bianco if self.display.mouseRight: self.normaldisplay = not(self.normaldisplay) print "Display Mode:", "Normal" if self.normaldisplay else "Segmented" self.img = self.cam.getImage().flipHorizontal() self.dist = self.img.colorDistance(find_color).dilate(2) self.segmented = self.dist.stretch(230,255) self.blobs = self.segmented.findBlobs() self.blobs1 = self.segmented.findBlobs() self.img.dl().selectFont('Arial') self.my_obj = [ "circle", "rectangle"] # elementi da cercare nello schemo if self.blobs: for obj in self.my_obj: self.ObjectType( obj , self.blobs, self.img ) #cerca elementi di tipo my_obj if self.normaldisplay: #mostra le immagini da webcam self.img.show() else: self.segmented.show() #mostra quello che vede il programma quando analizza l'immagine c = RGB_color() print "ShapeColor :",c.RED,c.GREEN,c.BLUE ShapeDetection(c.RED,c.GREEN,c.BLUE)
|
|