02-ago: [proyecto] Sistema vigilancia Tapo con deteccion movimiento/persona + notificacion Telegram/Alexa
This commit is contained in:
35
vigilancia/camara.py
Normal file
35
vigilancia/camara.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import cv2
|
||||
import time
|
||||
|
||||
|
||||
class CamaraRTSP:
|
||||
def __init__(self, url, nombre):
|
||||
self.url = url
|
||||
self.nombre = nombre
|
||||
self.cap = None
|
||||
self._conectar()
|
||||
|
||||
def _conectar(self):
|
||||
self.cap = cv2.VideoCapture(self.url)
|
||||
self.cap.set(cv2.CAP_PROP_OPEN_TIMEOUT_MSEC, 5000)
|
||||
self.cap.set(cv2.CAP_PROP_READ_TIMEOUT_MSEC, 5000)
|
||||
|
||||
def leer_frame(self):
|
||||
if self.cap is None or not self.cap.isOpened():
|
||||
print(f"[{self.nombre}] Reconectando...")
|
||||
try:
|
||||
self._conectar()
|
||||
except Exception as e:
|
||||
print(f"[{self.nombre}] Error al reconectar: {e}")
|
||||
self.cap = None
|
||||
time.sleep(2)
|
||||
return None
|
||||
|
||||
ok, frame = self.cap.read()
|
||||
if not ok:
|
||||
print(f"[{self.nombre}] Frame perdido, reintentando...")
|
||||
self.cap.release()
|
||||
self.cap = None
|
||||
return None
|
||||
|
||||
return frame
|
||||
Reference in New Issue
Block a user