class Main(object): def __init__(self): self.processor = Process() self.control = Control() self.width = 800 self.height = 600 self.fps = 1000 / 60 self.UI_handler = [] def start(self): self.root = Tk() self.root.title("Motion Control") self.canvas = Canvas(self.root, width=self.width, height=self.height) self.canvas.pack() self.timerEventListener() self.root.mainloop() self.closeEvent() def timerEventListener(self): if (self.fps == None): return self.timerEvent() self.refreshUI() self.canvas.after(self.fps, self.timerEventListener) def timerEvent(self): self.processor.process() def closeEvent(self): self.processor.close() def drawRealtimeImages(self): for handle in self.UI_handler: self.canvas.delete(handle) self.UI_handler = [] view = Process.BGRtoRGBA(self.processor.original_image, self.width / 2, self.height / 2) self.view1 = ImageTk.PhotoImage(image=Image.fromarray(view)) self.processor.paint() view = Process.BGRtoRGBA(self.processor.drawing_canvas, self.width / 2, self.height / 2) self.view2 = ImageTk.PhotoImage(image=Image.fromarray(view)) view = Process.GRAYtoRGBA(self.processor.thresholded_image, self.width / 2, self.height / 2) self.view3 = ImageTk.PhotoImage(image=Image.fromarray(view)) self.UI_handler.append(self.canvas.create_image(0, 0, image=self.view1, anchor="nw")) self.UI_handler.append(self.canvas.create_image(800, 600, image=self.view2, anchor="se")) self.UI_handler.append(self.canvas.create_image(0, 600, image=self.view3, anchor="sw")) if hasattr(self.processor, 'defect_point') and len(self.processor.defect_point) != 0 : self.UI_handler.append(self.canvas.create_text(750, 20, text="Fingers: " + str(len(self.processor.defect_point) - 2), anchor="ne", font="15")) else : self.UI_handler.append(self.canvas.create_text(750, 20, text="Fingers: " + str(0), anchor="ne", font="15")) if self.control.signal == True : self.UI_handler.append(self.canvas.create_text(750, 40, text="Control Mode: On", anchor="ne", font="15")) else : self.UI_handler.append(self.canvas.create_text(750, 40, text="Control Mode: Off", anchor="ne", font="15")) def refreshUI(self): self.drawRealtimeImages() if hasattr(self.processor, 'defect_point') : self.control.gestureAnalysis(self.processor.defect_point,self.processor.center)
def setSumOfBkg(self): if "SumOfBkg" in self.processes: return sumofbkg = Process('SumOfBkg', [], {}, 'sumofbkg', year=self.year, region=self.region) for process in self: if process.proctype == 'bkg': sumofbkg.add(process) sumofbkg.variable = self.variable sumofbkg.process = MCOrderMap[self.region][0] self.processes['SumOfBkg'] = sumofbkg return self['SumOfBkg']
def run_sth(self): while True: try: __passfreq = float(self.frequency_box.get()) __passamp = [] for i in range(self.__N): __passamp.append(float(self.__slider_amps[i].get())) break except ValueError: print("Oops! That was not a valid number. Try again...") break # Create the wav file data (__wave,__file) = Process.process(self,__passfreq,__passamp,self.__N) # Write the file wavfile.write(__file, 44100,__wave) # Play the file using pygame mixer.init() mixer.music.load(__file) mixer.music.play()