コード例 #1
0
 def _capture_loop(self):
     dt = 1 / self.fps
     logger.debug("Observation started")
     while self.isrunning:
         ret, img = self.camera.read()
         if ret:
             if len(self.frames) == self.max_frames:
                 self.frames = self.frames[1:]
             self.frames.append(img)
         time.sleep(dt)
     logger.info("Thread stopped successfully")
コード例 #2
0
    def gen_frames(self) -> Generator:
        logger.debug('Sending frames')
        while True:
            success, frame = self.camera.read()
            if not success:
                logger.error('No camera found.')
                break
            else:
                ret, buffer = cv2.imencode('.jpg', frame)
                frame = buffer.tobytes()
                yield (b'--frame\r\n'
                       b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

        self.camera.release()
コード例 #3
0
 def run(self):
     logger.debug("Perparing thread")
     if self.thread is None:
         logger.debug("Creating thread")
         thread = threading.Thread(target=self._capture_loop, daemon=True)
         logger.debug("Starting thread")
         self.isrunning = True
         thread.start()
         logger.info("Thread started")
コード例 #4
0
ファイル: camera.py プロジェクト: igarag/christof
def video_feed() -> Response:
    logger.debug(f'Stopping video.')
    return Response(truman.stop(), )
コード例 #5
0
ファイル: camera.py プロジェクト: igarag/christof
def video_feed() -> StreamingResponse:
    logger.debug(f'Sending images . . .')
    return StreamingResponse(truman.gen_frames(),
                             media_type="multipart/x-mixed-replace;boundary=frame")
コード例 #6
0
 def stop(self):
     logger.debug("Stopping thread")
     self.isrunning = False