Conexión de una cámara analógica a una Raspberry Pi. Servidor de videovigilancia mediante Raspberry Pi. Creando vídeo time-lapse

Veamos métodos para conectar correctamente la cámara a Raspberry Pi y trabajar con ella a través de la ventana de terminal y usando el lenguaje de programación Python.
Materiales relacionados:
Al conectar la cámara a la Raspberry, recuerda lo siguiente:
  • La cámara teme a la electricidad estática; es recomendable tocarla durante el funcionamiento a través de material antiestático.
  • la cámara consume 250 mA; cuando se utiliza una fuente de alimentación Malina mediocre, conectar la cámara puede causar una falta de energía cuando la cámara está funcionando activamente
  • no hay micrófono en la cámara
  • la parte superior de la cámara está ubicada en el lado opuesto a la salida del cable, pero hay un comando especial para reflejar la imagen verticalmente; más sobre eso a continuación.

Conexión

Es recomendable conectar la cámara a una Raspberry apagada. Puedes apagar rápidamente Raspberry con el comando
sudo se apaga ahora
El conector en cadena CSI se encuentra al lado de HDMI: La ventaja de conectar la cámara a través de este conector, a diferencia del USB, es que descarga el procesador al transferir datos a través de la interfaz CSI.
Para facilitar la fijación de la cámara hay soluciones listas para usar, por ejemplo - Soporte acrílico.
La interfaz de la cámara debe estar activada en la configuración de Raspberry:
Después de activar la cámara (si es necesario), se debe reiniciar Malina: sudo reboot now
Para trabajar con la cámara, Raspbian ya tiene preinstaladas las utilidades y controladores necesarios. Actualicemos los paquetes para usar las últimas versiones: sudo apt-get update -y sudo apt-get dist-upgrade -y Si todo se hace correctamente, intentemos obtener un fotograma de prueba de la cámara: cree una carpeta para fotos, vaya y ejecute el comando de captura de imagen: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
En caso de fallo deberás comprobar los pasos anteriores, o hacer sonar los contactos del conector de la cámara y de Malina.
Los siguientes paquetes para trabajar con la cámara están preinstalados en el sistema operativo Raspbian:
  • raspivid, raspvidyuv - captura de video
  • raspistill, raspiyuv - tomando fotos
Una guía completa de las utilidades enumeradas está disponible en idioma en Inglés está encendido apagado. Sitio web de frambuesa pi
Todas las utilidades se inician desde la terminal y son bastante fáciles de usar.
Los paquetes con nombres que terminan en "yuv" no utilizan el componente de codificación: almacenan la información "sin procesar" sin procesar recibida por el sensor de la cámara. Veamos cómo trabajar con cada paquete, pero primero nos familiarizaremos con la lista de parámetros de cámara comunes a todos los paquetes y luego veremos argumentos específicos y ejemplos específicos sus aplicaciones.

Parámetros comunes

Veamos los valores de los parámetros. Cabe resaltar que:
  • Si no se especifica un argumento al llamar a la utilidad, se utiliza su valor predeterminado.
  • SI LA COLUMNA “RANGO DE VALORES PERMITIDOS” ESTÁ VACÍA, entonces no es necesario pasar valores adicionales; basta con pasar el argumento en sí.
  • La vista previa se muestra únicamente en un monitor físico conectado a la Raspberry. Si accede a Raspberry a través de escritorio remoto (VNC), la vista previa no se mostrará en ninguna configuración ya que la imagen de vista previa se envía directamente al monitor además del resto de la información.
  • Similar a ver videos a través del escritorio
Argumento
Descripción
Rango válido
Valor por defecto
-pag
Opciones de la ventana de vista previa
ancho, alto, coordenada x, coordenada y
-F
Vista previa en pantalla completa
No
-norte
Sin vista previa
-op.
Transparencia de la ventana de vista previa
0...255
255
-sh
Nitidez
-100...100
0
-co
Contraste
-100...100
0
-br
Iluminación
0...100
50
-sa
Saturación
-100...100
0
-YO ASI
Sensibilidad del sensor de la cámara
-100...100
0
-vs
Estabilización de vídeo
(solo video)
No
-ev
Compensación de exposición
-10...10
0
-ex
Exposición
  • noche
  • vista previa nocturna
  • Luz de fondo: luz de fondo detrás del sujeto.
  • foco: iluminación de foco
  • deportes: objeto en movimiento
  • nieve: paisaje nevado
  • playa: paisaje de playa
  • muy largo: exposición prolongada
  • fixfps: limita FPS a un valor fijo
  • antivibración: antivibración
  • fuegos artificiales: paisaje con fuegos artificiales
auto
-awb
balance de blancos
  • sol: 5000K...6500K - soleado
  • nube: 6500K ... 12000K nublado
  • sombra: a la sombra
  • tungsteno: 2500K ... 3500K tungsteno
  • fluorescente: 2500K...4500K
  • incandescente: metal al rojo vivo
  • flash: con flash
  • horizonte
auto
-ifx
Varios efectos
ninguna, negativo, solarizar, posterizar, pizarra, bosquejo, eliminar ruido, realzar, pintura al óleo, escotilla, gpen, pastel, acuarela, película, difuminar, saturación, intercambio de colores, lavado, punto de color, equilibrio de color, dibujos animados
ninguno
-cfx
Balance de color
0...255:0...255
128:128
-mm
Medición de exposición
  • promedio: promedio
  • punto: punto
  • retroiluminado: leer imagen retroiluminada
  • matriz: medición matricial
promedio
-putrefacción
Doblar
0 ... 359
0
-hf
reflexión horizontal
No
-vf
reflexión vertical
No
-roi
Retorno de la inversión del sensor
coordenadas desde la esquina superior izquierda y el ancho y alto del área
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
velocidad de obturación
en microsegundos
6000000
-drc
Compresión de rango dinámico
apagado
-calle
mostrar estadísticas
No
A continuación, consideraremos las utilidades por separado.


raspistill - captura de fotos

Esta utilidad produce una imagen comprimida codificada y, para realizar esta acción, se pasan bastantes parámetros como argumentos cuando se ejecuta raspistill.

Argumentos

Argumento
Descripción
Rango válido
Valor por defecto
-w
Ancho
0...máx.
máx.
-h
Altura
0...máx.
máx.
-q
Calidad
0...100
75
-o
Nombre del archivo
la ruta al archivo
-
-v
Salida al terminal
Información sobre el proceso de captura.
No
-t
Retraso antes de la acción
en milisegundos
0
-tl
Lapso de tiempo
ejemplo: -tl 2000 -o imagen%04d.jpg
2000 - intervalo
%04d - patrón numérico de 4 dígitos
-
-mi
Codificación para formatear
jpg, bmp, gif y png
jpg
-X
Agregar etiquetas EXIF
hasta 32 etiquetas
-
-r
Almacenamiento de una matriz Bayer en los metadatos de una imagen codificada
-

Ejemplos

Veamos ejemplos específicos del uso de raspistill:
Capture una imagen estándar después de 2 segundos y guárdela en el archivo image.jpg (en la carpeta en la que se encuentra actualmente). La resolución será estándar (máxima) raspistill -t 2000 -o image.jpg Lo mismo, pero en una resolución de 640x480 raspistill -o image.jpg -w 640 -h 480 Captura una imagen con una calidad reducida del 5% y guárdelo en un archivo image.jpg (en la carpeta en la que se encuentra actualmente). Con esta calidad, el tamaño de la imagen será significativamente menor raspistill -o image.jpg -q 5 Obtener una imagen codificada en formato PNG y guardarla en el archivo image.png raspistill -o image.png –e png Obtener una imagen estándar con dos etiquetas EXIF ​​​​incrustadas: Artista - Boris, altitud GPS - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Creación de un conjunto de imágenes en intervalos de tiempo que se capturarán en intervalos de 10 segundos a lo largo de 10 minutos (600.000 ms) y se llamará image_num_001_today.jpg, image_num_002_today.jpg y así sucesivamente. La imagen final se llamará Latest.jpg raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l last.jpg Capture imágenes cuando presione Enter, los archivos se guardarán uno al lado del otro y se llamarán my_pics01.jpg my_pics02. jpg, etc. raspistill -t 0 -k -o mis_pics%02d.jpg

raspiyuv

Los argumentos de lanzamiento son exactamente los mismos que los de raspistill (ver arriba), de los cuales sólo los siguientes NO ESTÁN DISPONIBLES:
-q - calidad
-e - especificando el formato de imagen de destino
-x - Agregar etiquetas EXIF
-r: almacena una matriz de Bayer en los metadatos de la imagen codificada
Sin embargo, hay un argumento PROPIO.
-rgb: guarda datos sin procesar "sin procesar" en formato RGB888 (8 bits/canal)

raspivid - captura de vídeo

Parámetros de lanzamiento

Argumento
Descripción
Rango válido
Valor por defecto
-w
Ancho
0...máx.
1920
-h
Altura
0...máx.
1080
-b
Bitrate de vídeo
número de bits por segundo.
Se establece 10 Mbits/s -b 10000000
-o
Nombre del archivo
la ruta al archivo
-
-v
Salida al terminal
Información sobre el proceso de captura.
-t
Retraso antes de la acción
en milisegundos
0
-fps
Cuadros por segundo
Número de fotogramas por segundo 2...30
-k
Iniciar/detener la grabación presionando Enter
el proceso se interrumpe presionando “X”
-sg
Guardar segmentos de vídeo con una duración fija en archivos separados
Establecer la duración de un segmento y máscara de archivo
-sg 3000 -o video%04d.h264
-wr
Limitar el número máximo de archivos durante la segmentación
Se utiliza con el argumento -sg y esencialmente implementa la reescritura cíclica como en los DVR.
La resolución predeterminada es 1080p (1920x1080)
Veamos ejemplos específicos:
Grabar un vídeo estándar de 5 segundos (1920x1080, 30 fotogramas/seg) y guardarlo en un archivo video.h264 raspivid -t 5000 -o video.h264 Grabar un vídeo de 5 segundos con una resolución de 1080p y una tasa de bits específica de 3,5 Mbits /s y guardar en el archivo video.h264 raspivid -t 5000 -o video.h264 -b 3500000 Graba 5 segundos de video de definición estándar a una velocidad de cuadros de 5 fps y guárdalo en el archivo video.h264 raspivid -t 5000 -o video.h264 -f 5 Si un monitor está conectado a la Raspberry a través de HDMI, el video grabado se puede ver usando el reproductor omxplayer: sudo apt-get install omxplayer #si el reproductor aún no está instalado omxplayer video.h264 La visualización de video no está disponible a través de VNC

Códigos de error

  • 0 - finalización exitosa
  • 64 - comando no válido enviado (error de sintaxis)
  • 70 - error en la utilidad o al comunicarse con la cámara
  • 130 - la ejecución fue interrumpida por el usuario (combinación de teclas Ctrl + C)

Biblioteca PiCamera

Esta es una biblioteca para el lenguaje de programación Python que le permite simplificar y automatizar el trabajo con la cámara Raspberry.
Descripción completa de la biblioteca en inglés.
En las versiones modernas de la distribución Raspbian, la biblioteca ya está preinstalada, puedes verificar esto a través de la consola de Python python3 import picamera En caso de falla, debes salir de la consola ingresando el comando exit() o usando Ctrl + Combinación de teclas D e instale la biblioteca con el comando sudo apt-get install python3-picamera Trabajar con la cámara desde código Python similar a los comandos de terminal discutidos anteriormente. Puede obtener fácilmente una imagen estándar de una cámara directamente en la consola de Python: importar picamera #importar la biblioteca de la cámara cámara = picamera.PiCamera() #crear un objeto de cámara cámara.capture("image.jpg") #llamar a la imagen de la cámara método de captura cámara .close() #cerrar la sesión de la cámara La imagen se guardará en el archivo image.jpg en la carpeta actual.

Hace dos años, cuando comencé a trabajar en multicópteros, tuve que construir uno pequeño. Dado que el cuadricóptero estaba destinado a ser puramente autónomo, todo lo que se necesitaba de este control remoto era controlar el dron durante las pruebas y la configuración.

En principio, el mando a distancia hizo frente con bastante éxito a todas las tareas que se le asignaron. . Pero también hubo graves deficiencias.

  1. Las baterías no encajaban en el estuche, así que tuve que pegarlas con cinta aislante :)
  2. Los parámetros se ajustaron mediante cuatro potenciómetros, que resultaron ser muy sensibles a la temperatura. Estableces algunos valores en el interior, sales al exterior y ya son diferentes, se han ido flotando.
  3. Ud. Arduino Nano, que usé en el control remoto, solo hay 8 entradas analógicas. Cuatro estaban ocupados por potenciómetros de sintonización. Un potenciómetro sirvió como gas. Se conectaron dos entradas al joystick. Sólo quedaba una salida libre y había muchos más parámetros para configurar.
  4. El único joystick no era el del piloto. Controlar el acelerador con un potenciómetro también resultaba bastante frustrante.
  5. Y el mando a distancia no emitió ningún sonido, lo que a veces resulta muy útil.

Para eliminar todas estas deficiencias, decidí rediseñar radicalmente el mando a distancia. Tanto la parte de hardware como la de software. Esto es lo que quería hacer:

  • Haz un estuche grande para que puedas guardar en él todo lo que quieras ahora (incluidas las baterías) y lo que quieras después.
  • De alguna manera soluciono el problema con la configuración, no aumentando el número de potenciómetros. Además, agregue la capacidad de guardar parámetros en el control remoto.
  • Haz dos joysticks, como en las consolas de piloto normales. Bueno, pon los joysticks ortodoxos.

Nuevo edificio

La idea es extremadamente simple y efectiva. Cortamos dos placas de plexiglás u otro material fino y las conectamos con rejillas. Todo el contenido del estuche está sujeto a la placa superior o inferior.

Controles y menús

Para controlar una serie de parámetros, debe colocar varios potenciómetros en el control remoto y agregar un ADC, o realizar todas las configuraciones a través del menú. Como ya dije, ajustar con potenciómetros no siempre es una buena idea, pero tampoco hay que renunciar a ello. Entonces, se decidió dejar cuatro potenciómetros en el control remoto y agregar un menú completo.

Para navegar por el menú y cambiar parámetros se suelen utilizar botones. Izquierda derecha arriba abajo. Pero quería usar un codificador en lugar de botones. Obtuve esta idea del controlador de una impresora 3D.


Por supuesto, debido a la adición del menú, el código del control remoto se ha ampliado varias veces. Para empezar, agregué solo tres elementos de menú: "Telemetría", "Parámetros" y "Almacenar parámetros". La primera ventana muestra hasta ocho indicadores diferentes. Hasta ahora sólo uso tres: batería, brújula y altitud.

En la segunda ventana están disponibles seis parámetros: coeficientes del controlador PID para los ejes X/Y, Z y ángulos de corrección del acelerómetro.

El tercer elemento le permite guardar parámetros en EEPROM.

Palancas de mando

No pensé mucho en la elección de los joysticks piloto. Dio la casualidad de que el primer joystick Turnigy 9XR me lo regaló un colega en el negocio de los cuadricópteros: Alexander Vasiliev, propietario del conocido sitio web alex-exe.ru. Pedí el segundo directamente a Hobbyking.


El primer joystick tenía un resorte en ambas coordenadas para controlar la guiñada y el cabeceo. El segundo que tomé fue el mismo, para luego convertirlo en un joystick para controlar la tracción y la rotación.

Nutrición

En el antiguo control remoto usaba un regulador de voltaje LM7805 simple, que se alimentaba con un montón de 8 baterías AA. Una opción terriblemente ineficiente, en la que se gastaron 7 voltios en calentar el regulador. 8 baterías, porque solo había un compartimento de este tipo a mano, y LM7805, porque en ese momento esta opción me parecía la más simple y, lo más importante, la más rápida.

Ahora decidí actuar con más prudencia e instalé un regulador bastante eficaz en el LM2596S. Y en lugar de 8 pilas AA, instalé un compartimento para dos baterías LiIon 18650.


Resultado

Juntando todo, obtuvimos este dispositivo. Vista interior.


Pero con la tapa cerrada.


Faltan las tapas de un potenciómetro y las tapas de los joysticks.

Por último, un vídeo sobre cómo se configuran los ajustes a través del menú.


Línea de fondo

El mando a distancia está físicamente montado. Ahora estoy trabajando para finalizar el código del control remoto y el cuadricóptero para devolverles su antigua y fuerte amistad.

Al configurar el control remoto, se identificaron deficiencias. En primer lugar, las esquinas inferiores del control remoto descansan en sus manos: (probablemente rediseñaré un poco las placas, suavizaré las esquinas. En segundo lugar, incluso una pantalla de 16x4 no es suficiente para una hermosa salida de telemetría; tengo que acortar el nombres de parámetros a dos letras En la próxima versión del dispositivo instalaré una pantalla de puntos o inmediatamente una matriz TFT.


La computadora de placa única Raspberry Pi te permite crear cosas realmente interesantes y útiles: desde centros multimedia hasta sistemas domóticos. Al conectar varios módulos a la Raspberry Pi, puede ampliar significativamente la funcionalidad de esta minicomputadora.



Uno de estos complementos adicionales es una cámara, que le permite tomar fotografías o grabar videos. Hoy en día existen en el mercado una serie de cámaras para Raspberry Pi, y en este artículo haremos un breve repaso de ellas.


Veamos seis de las cámaras más populares: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi Compatible Fisheye Camera, Raspberry Pi Camera V2, Raspberry Pi Camera V2 Noir y Raspberry Pi Camera 1.3.



ZeroCam Noir es un módulo de cámara para Raspberry Pi Zero o Raspberry Pi Zero W, por lo que si quieres usarlo en Raspberry Pi 3 o 2, necesitarás usar un cable adaptador. Esta cámara no tiene un filtro de infrarrojos en la lente, lo que la hace ideal para fotografías con poca luz. Estas son algunas de sus principales características: sensor de 5 megapíxeles, 2592 × 1944 píxeles, 1080p a 30 FPS (o 60 FPS a 720p, 90 FPS a 480p), distancia focal 3,60 mm, 53,50 grados horizontal, 41,41 grados vertical, aprox. Dimensiones del tablero con cámara: 60 x 11,4 x 5,1 mm.



Esta es la versión ojo de pez de ZeroCam, lo que significa que tiene una imagen de gran angular. Esta cámara también está hecha para Pi Zero o Pi Zero W, por lo que para usarla con otro panel Pi necesitas un cable adaptador.



Esta es una cámara ojo de pez compatible con Raspberry Pi que se puede encontrar fácilmente en varias plataformas comerciales en línea como AliExpress, TaoBao, eBay. Se caracteriza por un gran angular de visión de 175º. Se basa en el sensor Omnivision 5647 con una resolución de 5 megapíxeles (2592 x 1944 píxeles).



Esta cámara está equipada con un sensor de imagen Sony IMX219 de 8 megapíxeles con lente focal fija, capaz de mostrar imágenes estáticas de 3280×2464 píxeles, admite vídeos de 1080p30, 720p60 y 640×480p90. La cámara es compatible con todas las placas Raspberry Pi, pero si quieres usarla con Pi Zero, necesitas un cable adaptador.



Esta cámara tiene todas las características del módulo Raspberry Pi Camera V2, pero no tiene filtro IR. Esto significa que es casi una cámara ideal para disparar en la oscuridad.



Raspberry Pi Camera 1.3 es el predecesor del módulo V2. Está equipado con un sensor OmniVision OV5647 de 5 megapíxeles.

Comparación del campo de visión y calidad de imagen de cámaras para Raspberry Pi

En esta prueba, todas las cámaras se instalan a una distancia de 1 metro de la imagen de prueba. Los resultados son los siguientes:











Comparación de la calidad de imagen y la reproducción cromática de las cámaras Raspberry Pi al hacer zoom











Comparación de la calidad de la fotografía de noche.

Los resultados a continuación muestran varias cámaras listas para fotografía nocturna haciendo lo mismo. imagen de prueba con muy poca luz en la oscuridad.







conclusiones

Todas las cámaras funcionan un poco mejor de lo esperado con módulos tan baratos. Desafortunadamente, no hay ninguna cámara todo en uno entre ellas, y hay que hacer una compensación ya que no parece haber ninguna cámara gran angular (ojo de pez) sin el filtro de corte IR. Entonces, si desea un gran angular, necesitará iluminación regular y, a la inversa, por la noche es poco probable que obtenga tomas de gran angular.

¡Buen día!

En Nochevieja se me ocurrió la idea de construir una especie de videovigilancia. Tenía todo lo que necesitaba a mano:

  • Computadora de placa única Raspberry Pi Modelo B
  • Cámara web LOGITECH HD Cámara web C270
Después de leer, decidí desarrollar un poco la idea del autor.
Conocido
Entonces, primero, familiaricémonos con el "componente" principal:
Apariencia de la frambuesa Pi:

Características:

  • Procesador Broadcom BCM2835 700MHz ARM1176JZFS con FPU y GPU Videocore 4
  • La GPU proporciona Open GL ES 2.0, OpenVG acelerado por hardware y decodificación de alto perfil 1080p30 H.264
  • La GPU es capaz de alcanzar 1 Gpixel/s, 1,5 Gtexel/s o 24 GFLOPS con filtrado de texturas e infraestructura DMA
  • 512 MB de RAM
  • Arranca desde la tarjeta SD, ejecutando una versión del sistema operativo Linux
  • Toma Ethernet 10/100 BaseT
  • Toma de salida de vídeo HDMI
  • 2 tomas USB 2.0
  • Toma de salida de vídeo compuesto RCA
  • Zócalo para tarjeta SD
  • Alimentado desde una toma microUSB
  • Conector de salida de audio de 3,5 mm
  • Conector de cámara de vídeo Raspberry Pi HD
  • Tamaño: 85,6x53,98x17mm"
pi@hall-pi ~ $ cat /proc/cpuinfo procesador: 0 nombre del modelo: procesador compatible con ARMv6 rev 7 (v6l) BogoMIPS: 2.00 Características: swp half thumb fastmult vfp edsp java tls Implementador de CPU: 0x41 Arquitectura de CPU: variante de 7 CPU : 0x0 Parte de CPU: 0xb76 Revisión de CPU: 7 Hardware: BCM2708 Revisión: 000e Serie: 000000005a82c372

Puede encontrar una lista de distribuciones admitidas oficialmente. Opté por Raspbian sin shell gráfico.

El proceso de instalación es bastante simple y no requiere Descripción detallada, así que enumeraré los hechos principales a los que vale la pena prestar atención:

  1. Configurar la zona horaria
  2. Configurar el nombre de la computadora
  3. Habilitar el acceso SSH
  4. Actualizacion del sistema
Después de completar todas las configuraciones necesarias, puede comenzar.
Preparación
Primero, instalemos todos los paquetes necesarios:
sudo apt-get install imagemagick libav-tools subversión libjpeg8-dev
Luego descargue y ensamble mjpg-streamer:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Porque Almacenaremos todos los datos en la nube, configuraremos el trabajo con control remoto sistema de archivos a través de WebDAV:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Para no ingresar su nombre de usuario y contraseña cada vez, debe agregarlos al archivo
/etc/davfs2/secretos
/mnt/dav contraseña de usuario
El proceso de trabajo
Agreguemos comandos a /etc/rc.local para montar WebDAV y ejecutar el script para transmitir a la red:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./salida_http.so -w ./www"
Ahora, yendo a http://:8080/ tendremos acceso a la cámara. Todo lo que queda es reenviar el puerto en el enrutador y podrá acceder a la cámara fuera de la red local.
Creando vídeo time-lapse
En primer lugar, necesitamos obtener una imagen de la cámara. Porque ya está ocupado (la imagen es transmitida por el servidor web), entonces aprovecharemos la oportunidad para recibir la imagen actual del servidor web:
curl http://localhost:8080/?action=snapshot > salida.jpg
Si queremos dibujar la fecha de la foto en la imagen, podemos usar el comando convertir
marca de tiempo=`stat -c %y out.jpg` convertir out.jpg -rellenar negro -rellenar blanco -pointsize 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Versión completa guion:
#!/bin/bash nombre de archivo=$(perl -e "tiempo de impresión") nombre de carpeta=$(fecha --rfc-3339=fecha) curl http://localhost:8080/?action=snapshot > $nombre de archivo marca de tiempo=` stat -c %y $nombre de archivo` mkdir /mnt/dav/out/$nombre de carpeta convertir $nombre de archivo -rellenar negro -rellenar blanco -tamaño de puntos 15 -draw "text 5.15 "$(marca de tiempo:0:19)"" /mnt /dav /out/$nombrecarpeta/$nombrearchivo.jpg rm $nombrearchivo
El video se ensambla usando el comando avconv:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Versión completa del guión del montaje del vídeo:
#!/bin/bash filename=$(date --rfc-3339=date) i=0 para f en `ls -tr /mnt/dav/out/$filename/*.jpg 2>/dev/null` hacer newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) done rmdir -R /mnt/dav/out/$nombre de archivo/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$nombrearchivo.avi rm *.jpg
Ahora solo queda registrar la ejecución de scripts en el programador Cron:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Vídeo de ejemplo
Conclusión
Este enfoque ayuda a eliminar la necesidad de pasar mucho tiempo viendo vídeos y también reduce el coste del producto final. Gracias a la presencia de un sistema operativo completo, es posible ampliar la funcionalidad en la dirección correcta.

Porque Este ordenador tiene rendimiento suficiente para recibir, almacenar, procesar y transmitir vídeo desde una cámara (por ejemplo, desde una cámara USB) vía wifi a otros dispositivos. Hay cámaras especiales para Raspberry PI que se conectan a un conector especial y cámaras USB que se conectan a cualquier Puerto USB en Frambuesa PI. Porque Las cámaras USB, por regla general, son mucho más baratas que las especiales (aunque peores), por lo que a continuación consideraremos usar una cámara USB con Raspberry PI. Hay varios programas para capturar video desde una cámara USB, o puedes escribir el tuyo propio, pero en aras de la simplicidad, primero veamos cómo capturar y transmitir video usando el programa de movimiento. Para instalar el programa de movimiento en Raspberry PI, primero debe conectarse a él a través del programa Putty (o cualquier otro programa de terminal con la capacidad de comunicarse a través de SSH) (para obtener información sobre cómo hacerlo, consulte el artículo anterior “Raspberry PI 3 configuración y gestión de GPIO a través de WIFI”). Después de conectarse a Raspberry PI, debe actualizar el sistema usando los comandos

Sudo apt-obtener actualización

Sudo apt-get actualización

Después de una actualización exitosa del sistema, debe instalar el programa de movimiento con el comando

Sudo apt-get install movimiento

Durante la instalación es posible que se le pregunte "¿Desea continuar?" después de lo cual deberá ingresar la letra "Y". Después de instalar el programa de movimiento, deberá realizar algunos cambios en los archivos de configuración. Abra el archivo motion.conf en el editor nano con el comando

Sudo nano /etc/motion/motion.conf

Entonces

Reemplazado por

A continuación, encontraremos otras líneas para cambiar, para hacer esto presione la combinación de teclas CTRL+W, ingrese “stream_localhost” y presione enter, luego de eso se debe encontrar la línea requerida, si no se encuentra, entonces la variable “stream_localhost ”se llama de otra manera, por ejemplo “webcam_localhost” o algo así. Después de encontrar la línea con esta variable, debe

Stream_localhost encendido

reemplazado por

Stream_maxrate 1

Y reemplazar con

Stream_maxrate 100

Reemplazado por

Entonces

Tiempo_marco_mínimo 0

Reemplazado por

Tiempo_marco_mínimo 1

Esto último se hace para que los cuadros se generen una vez por segundo; esto no se ve muy bien, pero el video no desaparecerá si la imagen cambia repentinamente. El propósito de cada variable se puede leer en los comentarios.
Ahora guarde los cambios presionando CTRL+O e ingrese, luego presione CTRL+X y salga nanoeditor. Ahora editemos otro archivo, para ello ingresamos el comando

Sudo nano /etc/default/motion

Y reemplaza la línea

Start_motion_daemon=no

Start_motion_daemon=sí

Luego guarde los cambios presionando CTRL+O e ingrese y luego presione CTRL+X y salga del nano editor. Ahora puedes iniciar la transferencia de vídeo (la cámara USB debe estar conectada a uno de los puertos) con el comando

Inicio del movimiento del servicio Sudo

detenerse con el comando

Detención del movimiento del servicio Sudo

Para ver el video, debe abrir el navegador e ingresar la dirección IP de la Raspberry PI en la barra de direcciones, luego poner dos puntos y 8081 (dirección IP de la Raspberry PI: 8081) y presionar Enter, después de lo cual El vídeo de la cámara USB debería aparecer en el navegador. Puedes ver cómo se hace todo esto, ver el resultado y algo más en el vídeo:

Como esto de una manera sencilla Puede obtener vídeo desde una cámara USB conectada a Raspberry PI. Si es una Raspberry PI 3 con wifi incorporado y alimentada por una powerbank (o alguna otra fuente portátil de electricidad) (por ejemplo esta o alguna más económica, aunque no se recomienda usar una barata, Raspberry PI necesita una fuente de energía normal para utilizar todas sus capacidades, también es muy recomendable instalar un disipador de calor para el procesador y otros microcircuitos que se desarrollan durante el funcionamiento de la Raspberry, lo ideal es que el disipador de calor sea de cobre y esté recubierto con pintura negra especial), luego en base a todo Para esto puedes hacer algún tipo de sistema de videovigilancia, cámara de video o algo similar.




Arriba