def capture_frame(self): """ Método chamado pela Thread para capturar o frame. Sempre retorna uma imagem no padrão OpenCV (ndarray). Se _is_working for true e a webcam atual é valida, captura um frame. Caso contrário, retorna uma imagem padrão setada para preto. """ if (self.is_working() and self.is_valid()): return self._do_capture() return ImagePack.black_image()
def get_image(self): """ Retorna a imagem atualmente em foco do projeto. A imagem pode ser tanto a de um upload feito pelo usuário ou o frame atual da webcam. A imagem retornada está no formato jpeg e contêm o retângulo desenhado pelo usuário (caso exista). """ try: if(self.uploaded_frame.is_valid()): copy = self.uploaded_frame.get_copy() else: copy = self.captured_frame.get_copy() return self.draw_and_convert_frame(copy) except: return ImagePack.encode_to_jpg(ImagePack.black_image())
def _do_capture(self): """ Método que efetivamente faz a captura do frame. Sempre retorna uma imagem no padrão OpenCV (ndarray). """ with self.lock_video: success, frame = self.video_capture.read() self.set_working_state(success) return frame if success else ImagePack.black_image()