class Camera() running = True def __init__(self,fps=24): self.emitter = EventEmitter() self.fps = fps self.cap = cv2.VideoCapture(0) self.thread = threading.Thread(target=self.run) self.thread.daemon = True self.thread.start() def run(self): capturePeriodSecs = 1.0 / self.fps while self.Running == True: try: self.cap_frame() except Exception as error: print ("error with capturing frames: ", error) time.sleep(capturePeriodSecs) def onNewFrame(self,callback): self.emitter.on('frame', callback) def removeOnNewFrameListener(self,callback): self.emitter.remove_emitter_listener('frame', callback) def stop(self): self.running = False def cap_frame(self): f,img = self.cap.read() self.latest_frame = img self.emitter.emit('frame', img)