def startMain(self): #set queue size self.cam_queue = mp.Queue(maxsize=100) #get all cams time.sleep(3) self.stopbit = mp.Event() self.camProcess = vs.StreamCapture(self.camlink, self.stopbit, self.cam_queue, self.framerate) self.camProcess.start() # calculate FPS lastFTime = time.time() try: while True: if not self.cam_queue.empty(): print('Got frame') cmd, val = self.cam_queue.get() ''' #calculate FPS diffTime = time.time() - lastFTime` fps = 1 / diffTime # print(fps) ''' lastFTime = time.time() # if cmd == vs.StreamCommands.RESOLUTION: # pass #print(val) if cmd == vs.StreamCommands.FRAME: if val is not None: # val = cv2.cvtColor(val, cv2.COLOR_BayerBG2BGR) cv2.imshow('Cam: ' + self.camlink, val) cv2.waitKey(1) except KeyboardInterrupt: print('Caught Keyboard interrupt') except: e = sys.exc_info() print('Caught Main Exception') print(e) self.stopCamStream() cv2.destroyAllWindows()
def startMain(self): #set queue size self.cam_queue = mp.Queue(maxsize=7) self.stopbit = mp.Event() self.camProcess = vs.StreamCapture(self.camlink, self.stopbit, self.cam_queue, self.framerate) self.t = Thread(target=self.camProcess.run) self.t.setDaemon = True self.t.start() context = zmq.Context() socket = context.socket(zmq.PUB) socket.connect('tcp://' + self.address + ':' + self.port) socket.set_hwm(1) fps = Rate() fps.start() lastframecount = 0 frame = Frame() frame.srcid = self.src next_time = time.perf_counter() + 1.0 try: self.fps.start() while True: if not self.cam_queue.empty(): # print('Got frame') cmd, val = self.cam_queue.get() self.timestamp = datetime.datetime.now() self.fps.update() # if cmd == vs.StreamCommands.RESOLUTION: # pass #print(val) if cmd == vs.StreamCommands.FRAME: frame.count += 1 frame.img = val frame.timestamp = self.timestamp frame.camfps = self.fps.fps() if time.perf_counter() > next_time: next_time += 1.0 if self.verbose: print( f'FPS = {frame.camfps:.2f} {frame.streamfps:.2f}' ) if self.verbose and frame.img is not None: cv2.imshow(f'CAM {frame.srcid}', frame.img) cv2.waitKey(1) if frame.count is not None: if frame.count != lastframecount: lastframecount = frame.count socket.send_pyobj(frame) fps.update() frame.streamfps = fps.fps() else: time.sleep(1 / self.framerate) except KeyboardInterrupt: print('Caught Keyboard interrupt') except Exception as e: print('Caught Main Exception') print(e) self.stopCamStream() cv2.destroyAllWindows()