Como he explicado en detalles en este blog tutorial sobre cómo construir este proyecto con explicaciones y muestras de código.
Directorio de archivos de video | Directorio de imágenes extraídas |
---|---|
![]() | ![]() |
Iterar sobre todos los videos dentro de un directorio | Framas de extracción (después de la personalización (intervalo deseado (en segundos) entre los marcos extraídos, comienza después (segundos deseados), etc.) |
El extractor de cuadro de video es un script de Python que le permite extraer marcos que iteran a través de todos los archivos de video de un directorio y guardarlos como archivos de imagen individuales en dos directorios diferentes: uno para los marcos de tamaño originales y otro para los marcos redimensionados. El script utiliza paquetes OpenCV e Imutils Python para el procesamiento de imágenes y el paquete Fire Python para una interfaz de línea de comandos simplificada.
Este script le permite extraer marcos de videos a una velocidad específica. Al especificar el intervalo deseado (en segundos) entre los marcos extraídos, puede generar rápidamente un gran conjunto de datos de imágenes para la detección de objetos, clasificación de imágenes u otras tareas de visión por computadora.
Para la anotación de imágenes, a menudo es necesario extraer marcos de videos. Esta aplicación facilita generar un gran conjunto de datos de imágenes para la detección de objetos de entrenamiento o modelos de clasificación de imágenes, incluso si sus datos son inicialmente en forma de videos.
Al automatizar el proceso de extracción de cuadro para iterar a través de todos los archivos de video dentro de un directorio, esta aplicación le guarda tiempo y esfuerzo en comparación con extraer marcos manualmente de cada archivo de video.
¡Espero que encuentre útil el extractor de marco de video para los proyectos de visión por computadora!
Para usar el extractor de cuadro de video, debe ejecutar el script frame_extractor.py
Python con los siguientes argumentos:
vid_dir
: La ruta al directorio que contiene los archivos de video que desea extraer marcos.out_dir
: La ruta al directorio donde desea guardar los marcos extraídos.img_frmt
(Opcional): el formato de imagen para guardar los marcos extraídos en. El valor predeterminado es jpg .required_frame_rate
(opcional): el número de cuadros para extraer por segundo. El valor predeterminado es 1 .start_from_seconds
(opcional): el número de segundos para comenzar a extraer marcos. El valor predeterminado es 0 .La aplicación extraerá marcos de todos los videos en el directorio especificado y los guardará en el directorio de salida.
En lugar de pasar los argumentos cada vez que ejecuta esta aplicación, puede agregar estos argumentos dentro del archivo settings.py. ajustes
python frame_extractor_multithread.py
Para usar el extractor de marco de video, debe tener instalados los siguientes paquetes de Python:
Puede instalar estos paquetes usando PIP, ejecutando el siguiente comando en su terminal:
pip install opencv-python imutils fire
python frame_extractor . py - - help
python frame_extractor . py - - vid_dir = [ vid_dir ] - - out_dir = [ out_dir ] - - img_frmt = [ img_frmt ] - - required_frame_rate = [ required_frame_rate ] - - start_from_seconds = [ start_from_seconds ]
El proceso de extracción para todos los videos en el vid_dir
comenzará y los marcos extraídos se guardará en el out_dir
Supongamos que tiene un archivo de video llamado my_video.mp4 ubicado en el directorio/ruta/to/videos, y desea extraer marcos de él y guardarlos en el directorio/ruta/to/outputy, con una velocidad de cuadro de 2 cuadros por por segundo y a partir de 10 segundos en el video. Puede ejecutar el siguiente comando:
python frame_extractor . py - - vid_dir = / path / to / video - - out_dir = / path / to / output - - required_frame_rate = 2 - - start_from_seconds = 10
El script extraerá marcos del directorio my_video.mp4, guarda los marcos de tamaño originales en el directorio de/ruta/a/output_size_frames y los marcos redonzados en/rath/to/output/re_size_frames Directory. Los marcos extraídos se guardarán en formato JPEG, con un nombre de archivo de la forma my_video_1.jpg, my_video_2.jpg, etc.
Alternativamente, puede editar el archivo settings.py y el frame_extractor.py
aceptará los argumentos desde aquí.
Por ejemplo:
Editar configuración requerida en settings.py
# If you don't want to pass too many arguments every time you can modify the settings here.
# And the script will accept the setting from this file every time you run
# 'python extract_frames.py'
# Video file
VIDEO_DIRPATH = ROOT / 'videos' # EDIT: 1 (Required)
# Frame settings
REQUIRED_FRAME_RATE = 2 # EDIT: 2
# Number of seconds for a frame. For example: 0.5 means, 1 frame after 0.5 seconds pass
START_FROM_SECOND = 1 # EDIT: 3
# For example: 2 means, start extraction of the frames after 2 seconds of the video is passed.
REQUIRED_IMAGE_FORMAT = 'jpg' # EDIT: 4
REQUIRED_IMAGE_WIDTH = 720 # EDIT: 5
# Output frames dirpath
OUTDIR = BASE_ROOT / 'skyscraper' # EDIT: 6 (Required)
Si encuentra útil mi código Python, considere darle una estrella.
Para cualquier problema con la aplicación o tener comentarios o sugerencias de mejora. Por favor plantea un problema
El extractor de marco de video tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.