Oppure

Loading
11/06/15 9:29
lorenzoscarrone
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

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


#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)
aaa