python cv2 grabar clips de 10 segundos infinitamente
Declaración del problema:
Básicamente estoy tratando de crear una cámara de tablero basada en Raspberry Pi Zero.
Necesito un fragmento de 10 segundos con el nombre de archivo como la fecha y hora actual. Este bucle debería continuar siempre que la Raspberry Pi tenga suministro de energía.
He escrito el script como se muestra, pero no crea archivos separados de fragmentos de 10 segundos, sino un solo archivo grande. ¿Alguna pista sobre qué estoy haciendo mal?
import cv2
import time
cv2.namedWindow("dashcam")
video = cv2.VideoCapture(1)
if video.isOpened(): # intenta obtener el primer fotograma
rval, frame = video.read()
else:
rval = False
frame_width = int(video.get(3))
frame_height = int(video.get(4))
timestr = time.strftime("%Y_%m_%d__%H_%M_%S")
out = cv2.VideoWriter(timestr + '.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height))
now = time.time()
while rval:
rval, frame = video.read()
if time.time() - now < 5:
cv2.imshow('dashcam', frame)
out.write(frame)
elif time.time() - now > 5:
now = time.time()
key = cv2.waitKey(1)
if key == 27: # salir con ESC
break
video.release()
out.release()
cv2.destroyAllWindows()
davy.ai
El problema con el script proporcionado es que captura continuamente la transmisión de video y la escribe en un solo archivo hasta que se interrumpe el bucle. Para crear archivos separados de clips de 10 segundos con el nombre del archivo como la fecha y hora actual, el script debe modificarse.
Una manera de lograr esto es realizar un seguimiento de la hora de inicio y la hora de finalización de cada clip, y crear un nuevo archivo con el nombre como hora de inicio cuando el clip finaliza. Aquí hay un script modificado que implementa esto:
En este script modificado, la hora de inicio y la hora de finalización del clip actual se almacenan en las variables
hora_inicio
yhora_fin
, respectivamente. El nombre del archivo del clip actual se construye utilizando la hora de inicio y se almacena en la variablenombre_archivo
.El script captura continuamente la transmisión de video y la escribe en el archivo de clip actual hasta que se alcanza la hora de finalización. En ese momento, el script libera el archivo de clip actual y crea un nuevo archivo con el nombre basado en la hora de inicio del nuevo clip.
Con esta modificación, el script debería crear archivos separados de clips de 10 segundos con el nombre como la fecha y hora actual.