|
|
|
@ -10,30 +10,43 @@ class IPCamera(object):
|
|
|
|
|
|
|
|
|
|
def __init__(self, src=0): |
|
|
|
|
self.log = logging.getLogger(__name__) |
|
|
|
|
self.capture = cv2.VideoCapture(src) |
|
|
|
|
self.capture.set(cv2.CAP_PROP_BUFFERSIZE, 1) |
|
|
|
|
self.src = src |
|
|
|
|
self.FPS = 1/100 |
|
|
|
|
self.FPS_MS = int(self.FPS * 1000) |
|
|
|
|
# First initialisation self.status and self.frame |
|
|
|
|
|
|
|
|
|
(self.status, self.frame) = self.capture.read() |
|
|
|
|
|
|
|
|
|
if self.frame is not None: |
|
|
|
|
self.log.info("Uma nova conexao de camera foi criada com sucesso") |
|
|
|
|
else: |
|
|
|
|
self.log.error("Falha ao criar nova conexao de camera") |
|
|
|
|
|
|
|
|
|
self.create_connection() |
|
|
|
|
|
|
|
|
|
# Start frame retrieval thread |
|
|
|
|
self.thread = Thread(target=self.update, args=()) |
|
|
|
|
self.thread.daemon = True |
|
|
|
|
self.thread.start() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_connection(self): |
|
|
|
|
self.running = False |
|
|
|
|
while True: |
|
|
|
|
self.capture = cv2.VideoCapture(self.src) |
|
|
|
|
self.capture.set(cv2.CAP_PROP_BUFFERSIZE, 1) |
|
|
|
|
mensagem = "" |
|
|
|
|
if self.capture.isOpened(): |
|
|
|
|
(self.status, self.frame) = self.capture.read() |
|
|
|
|
if self.frame is None: |
|
|
|
|
mensagem = "Falha ao criar nova conexao de camera" |
|
|
|
|
else: |
|
|
|
|
mensagem = "Falha ao abrir camera" |
|
|
|
|
if not mensagem: |
|
|
|
|
break |
|
|
|
|
self.log.error(mensagem) |
|
|
|
|
time.sleep(1) |
|
|
|
|
self.log.info("Uma nova conexao de camera foi criada com sucesso") |
|
|
|
|
self.running = True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update(self): |
|
|
|
|
while True: |
|
|
|
|
try: |
|
|
|
|
if self.capture.isOpened(): |
|
|
|
|
if self.running and self.capture.isOpened(): |
|
|
|
|
(self.status, new_frame) = self.capture.read() |
|
|
|
|
self.frame = new_frame |
|
|
|
|
time.sleep(self.FPS) |
|
|
|
|