- Preparación del DVR para transmisión RTSP
- Preparando tu Raspberry Pi
- Instalación de OpenCV y otras bibliotecas en Raspberry Pi
- Programación de Raspberry Pi para transmitir video RTSP desde CCTV
- Prueba del visor de CCTV Raspberry Pi
La mayoría de los lugares de trabajo y edificios comerciales de hoy tienen un sistema de vigilancia CCTV instalado para monitorear las actividades. Pero a menudo es difícil para la autoridad o el personal de seguridad interesados monitorear la transmisión en vivo de todas las cámaras de forma continua para buscar actividad sospechosa. Con la visión por computadora y el aprendizaje automático avanzando en una fase rápida, es hora de que hagamos nuestros sistemas de CCTV más inteligentes. En este artículo, discutiremos cómo obtener la transmisión de video de un DVR existente (como Hikvision DVR) a través de la transmisión RTSP con Raspberry pi usando Python y OpenCV. Una vez que obtengamos esto, podremos aprovechar el poder de OpenCV en estas transmisiones de video para detectar un objeto en particular, leer la matrícula del vehículo, el reconocimiento facial, ¡y qué no!
Por el bien de este tutorial, usaré un DVR de CCTV de 4 canales Hikvision que ya está instalado en el edificio. Estaremos transmitiendo las 4 pantallas de las cámaras a la Raspberry y las mostraremos en una pantalla táctil de 5 pulgadas donde el usuario puede cambiar entre cada canal según sea necesario. Sé esto no mucho, considerando el poder de OpenCV y tengo planes de escalarlo con detección de movimiento, alerta de video de clarín, seguimiento de personas, etc.
Preparación del DVR para transmisión RTSP
Antes de sumergirnos en el hardware raspberry pi y el código Python, es importante verificar si el DVR es compatible con RTSP y cómo acceder a él. Pasé la mayor parte de mi tiempo atascado aquí porque el procedimiento parece diferir para cada tipo de DVR y tienes que hacer y muchas veces y probar. Pero una vez que descubres esto, siempre funciona como un encanto.
Lo primero es lo primero, asegúrese de conocer el nombre de usuario y la contraseña de su sistema DVR y que esté conectado a Internet. También en este tutorial, transmitiré el RTSP solo desde una red local, si tiene una IP estática, puede hacer el reenvío de puertos y seguir lo mismo para otras redes. Pero en lo que respecta a este tutorial, haremos todo dentro de la red local.
Paso 1: Busque la dirección IP de su DVR. Una vez que el DVR esté conectado a Internet, se le asignará su propia dirección IP. Puede encontrar esta dirección IP desde la página de configuración de su enrutador o desde la pantalla de su DVR (asumiendo que tiene un monitor conectado al DVR). La dirección IP de mi enrutador era http://192.168.11.110/ (cambiada por razones de seguridad)
Paso 2: Abra cualquier navegador web de su elección e ingrese la dirección IP y presione enter. Se le dirigirá a la página de inicio de sesión del DVR. Donde debe ingresar el nombre de usuario (el mío ha cambiado) y la contraseña de su DVR. El nombre de usuario predeterminado será admin, pero debe conocer la contraseña. Mi pantalla de inicio de sesión para DVR se muestra a continuación, es posible que su apariencia sea diferente.
Paso 3: Después de un inicio de sesión exitoso, busque el número de puerto RTSP en su DVR; la mayoría de las veces, el valor predeterminado será 554, pero podría cambiar. Mientras esté aquí, juegue con los ajustes de configuración para verificar si hay una opción para habilitar RTSP, si no, puede omitirla. Tienes que pasar algo de tiempo aquí, ya que el procedimiento es diferente según el DVR.
Paso 4: Prepare su enlace RTSP, el enlace RTSP básico tendrá el siguiente formato:
rtsp: //
Nuevamente, depende del tipo de DVR, puede usar Google para encontrar el que funcione para usted. El que funcionó para tenía el siguiente formato, también puede probar con esto-
rtsp: //
Dónde
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
Paso 5: Reproduzca la transmisión en VLC para asegurarse de que su conexión RTSP esté funcionando. Instale VLC en una computadora que esté conectada a la misma red que el DVR, ejecútelo y presione Ctrl + N para la transmisión por red. Ingrese la URL como se muestra a continuación y presione OK.
Si el enlace RTSP funciona como debería, debería ver una transmisión en vivo de su CCTV en el reproductor VLC como se muestra a continuación. Si arroja un error, debe encontrar el enlace correcto.
Una vez hecho esto, ya no necesitamos hablar de nuestro DVR, sigamos con nuestra Raspberry pi.
Preparando tu Raspberry Pi
A continuación, debemos configurar nuestra raspberry pi con la pantalla de 5 pulgadas. No voy a entrar en detalles de eso, ya que ya lo hemos cubierto muchas veces. Puede leer los siguientes artículos como guía:
- Introducción a Raspberry Pi
- Interfaz de pantalla de 5 pulgadas con Raspberry Pi
Estamos usando una Raspberry Pi 3 B + con Debian Buster OS ejecutándose en ella. También podría ser una buena idea usar Pi 4 si puede y también agregar algunas opciones de enfriamiento como un disipador de calor o un ventilador porque noté que la temperatura alcanza casi los 70 ° C. No seguí ningún procedimiento de enfriamiento a partir de ahora, y mi configuración se ve así:
Instalación de OpenCV y otras bibliotecas en Raspberry Pi
El siguiente paso es instalar OpenCV en Raspberry Pi. Anteriormente hemos discutido cómo compilar OpenCV en Raspberry pi.
- Instalación de OpenCV en Raspberry Pi
- Empezando con OpenCV
Puede seguir el enlace anterior y compilar OpenCV usando Cmake o simplemente instalarlo con un método apt-get. Recomendaría la última opción si no te gusta la programación OpenCV muy seriamente. Usé los siguientes comandos para instalar OpenCV.
sudo apt update sudo apt install python3-opencv
En nuestro programa, también estaremos haciendo uso de la biblioteca “cvui” para crear una interfaz de usuario básica con dos botones que nos permitan navegar entre las cuatro pantallas. Para instalar cvui, siga el siguiente comando.
Python3 pip instalar cvui
Con ambos paquetes instalados, podemos ingresar al programa principal. Asegúrese de que ambos paquetes instalados funcionen e intente importarlos desde la terminal de comandos de Pi.
Programación de Raspberry Pi para transmitir video RTSP desde CCTV
El programa completo de este proyecto se puede encontrar al final de esta página. La explicación del mismo es la siguiente. Comenzamos el programa incluyendo los archivos de encabezado requeridos.
importar cv2 importar cvui
La siguiente parte del programa requiere algunas modificaciones. Debe ingresar el nombre de usuario y la contraseña de su DVR. Para una pantalla de 5 pulgadas, el ancho y el alto son 800 y 480 respectivamente, por lo que hemos ingresado lo mismo.
rtsp_username = "admin" rtsp_password = "aswinth347653" ancho = 800 alto = 480 cam_no = 1
Continuando, tenemos una función llamada crear una cámara que se usará cada vez que cambiemos el número de cámara que se debe ver.
def create_camera (canal): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # El número de identificación para el ancho es 3 cap.set (4, 480) # El número de identificación para la altura es 480 cap.set (10, 100) # El número de identificación para el brillo es 10qq tapa de retorno
Dentro del bucle while principal, tenemos nuestro programa para leer un fotograma del dispositivo de captura y convertirlo a pantalla completa. La ventana de visualización en nuestro programa se llamará como una pantalla.
éxito, current_cam = cam.read () dim = (ancho, alto) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('pantalla', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('pantalla ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Seguido de eso tenemos el código de dos botones que se colocarán en la pantalla. El comando cvui.button se usa para colocar el botón en un lugar requerido y el comando cvui.mouse se usa para detectar el clic del mouse. Tenemos dos instrucciones if para dos botones si se hace clic en el botón, se ejecutará la instrucción if respectiva.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") y cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 if (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, ancho - 200, alto - 40, "Anterior") y cvui.mouse (cvui. CLIC)): print ("Botón anterior presionado") cvui.init ('pantalla') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Dentro de la declaración if , según el botón, aumentamos o disminuimos el recuento de cam_no y luego eliminamos la leva existente y creamos una nueva con la función que discutimos anteriormente. Además, tenga en cuenta que cvui.init tiene que llamar cada vez para actualizar la pantalla de la interfaz de usuario.
La parte final del código es mostrar el cuadro como salida y salir de la pantalla de salida cuando se presiona q. Solo esperamos una pulsación de tecla y si la tecla es 'q', destruiremos todas las ventanas.
cv2.imshow ('pantalla', Full_frame) si cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Prueba del visor de CCTV Raspberry Pi
Probar el código es bastante sencillo, encienda el pi y ejecute el código Python que se encuentra en la parte inferior de esta página. Asegúrese de haber ingresado las credenciales correctas para que funcione el enlace RTSP. Si quieres estar seguro, también puedes intentar usar el reproductor VLC en Pi que viene preinstalado en buster OS.
Si funciona en VLC, entonces podemos estar seguros de que nuestro pi está conectado a la misma red y el enlace RTSP está funcionando como debería. Luego abra el programa que se encuentra en la parte inferior de esta página y ejecútelo usando cualquier IDE de Python. Si las credenciales se ingresaron correctamente, verá la siguiente pantalla. Que muestra la transmisión de la cámara en vivo con dos botones en la parte inferior.
Dado que la pantalla tiene una pantalla táctil TFT, simplemente puede tocar los botones "anterior" y "siguiente" para pasar a la siguiente cámara. El programa está escrito en bucle entre las primeras cuatro cámaras; puede modificarlo fácilmente si hay más de 4 cámaras conectadas a su DVR.
El funcionamiento completo de este proyecto se puede encontrar en el video vinculado a continuación. Espero que hayas disfrutado del tutorial y hayas aprendido algo útil si tienes alguna pregunta, déjala en la sección de comentarios o también puedes usar nuestros foros para publicar tus otras preguntas. Además, planeo agregar detección de movimiento y función de guardado de video a esta configuración, así que estad atentos a eso también.