Hacer un bucle con script usando cv2 que convierte video en imágenes

Sjacobson1112

Soy un principiante que usa Python, por lo que probablemente sea relativamente simple, pero me gustaría hacer un script que encontré en línea usando Open CV en un bucle para que pueda convertir una carpeta completa de videos en imágenes.

Este código funciona bien cuando le pongo un nombre de archivo de video, cv2.VideoCapture()pero me he encontrado con problemas al intentar definirlo como un nombre de variable al que un bucle puede hacer referencia. Por lo tanto, ¡cualquier ayuda sobre cómo estructurar correctamente el ciclo y la subrutina sería extremadamente útil!

import cv2
import numpy as np
import os
vidcap = cv2.VideoCapture('FS_T8_2019-01-17_02.14.52_.MP4')

def getFrame(sec):
    vidcap.set(cv2.CAP_PROP_POS_MSEC,sec*1000)
    hasFrames,image = vidcap.read()
    if hasFrames:
        cv2.imwrite("image"+str(count)+".jpg", image)     # save frame as JPG file
    return hasFrames
sec = 0
frameRate = 1 #//it will capture image in each 1 second
count=1
success = getFrame(sec)
while success:
    count = count + 1
    sec = sec + frameRate
    sec = round(sec, 2)
    success = getFrame(sec)
Saikiran

Lo ideal sería mover vidcap dentro de la función getFrame para obtener la fuente de video como argumento, de modo que vidcap sea diferente para cada video. Hice un bucle sobre una carpeta (videos) y envié los marcos a otra carpeta (salida) como esta

import cv2
import numpy as np
import os
import sys
ROOT_DIRECTORY_PATH = sys.path[0]


def getFrame(sec, src, img_out):
    vidcap = cv2.VideoCapture(src)
    vidcap.set(cv2.CAP_PROP_POS_MSEC, sec * 1000)
    hasFrames, image = vidcap.read()
    if hasFrames:
        cv2.imwrite(img_out, image)     # save frame as JPG file
    return hasFrames

def create_frame(src, dst):
    sec = 0
    frameRate = 1  # //it will capture image in each 1 second
    count = 1
    img_out = dst + '_' + str(count) + '.jpg'
    success = getFrame(sec, src, img_out)
    while success:
        count = count + 1
        sec = sec + frameRate
        sec = round(sec, 2)
        img_out = dst + '_' + str(count) + '.jpg'
        success = getFrame(sec, src, img_out)

for mp4name in os.listdir('videos'):
    create_frame(ROOT_DIRECTORY_PATH + '/videos/' + mp4name,
                 ROOT_DIRECTORY_PATH + '/output/' + mp4name.split('.mp4')[0])

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Convierte HTML con imágenes a PDF usando iText

Cómo hacer que goroutines funcionen con funciones anónimas que devuelvan valor en un bucle

¿Cómo puedo hacer una salida de varias imágenes con un bucle for en procesamiento?

Insertar imágenes usando knitr :: include_graphics en un bucle for

¿Cómo hacer que una función con un bucle sea asíncrona en Swift?

Cómo hacer que 2 botones funcionen juntos en un script Java que se crea mediante un bucle

¿Cómo hacer que un modelo tenga imágenes ilimitadas con clip en Ruby on Rails?

Cargando imágenes con promesa en un bucle en orden

Escriba 2 imágenes en un video usando OpenCV (Python) de 10 segundos de duración

Abrir una imagen modal al hacer clic (con varias imágenes usando un solo modal)

descargar imágenes usando la biblioteca curl en un bucle sobre el marco de datos

Cuadrícula de imágenes usando un bucle en Jupyter-Notebook. ¿Cómo?

¿Puedo hacer que una secuencia de imágenes en el procesamiento se mueva / juegue con un sensor ultrasónico Arduino?

Seleccione varias imágenes en un bucle y muéstrelas individualmente con jQuery

cómo hacer un bucle de imágenes usando el bucle foreach

Python: ingrese imágenes en una lista con un bucle for

varias imágenes en un bucle fabricjs

¿Cómo mostrar imágenes de cv2 en el navegador usando flask?

bucle sobre imágenes en un directorio

Mostrar múltiples ventanas independientes con imágenes en tkinter y hacer que el bucle principal salga cuando todas se han cerrado

cómo cifrar imágenes en un bucle for con python

establecer imágenes en imagen en un bucle con Picasso

Hacer más ventanas con fondos (usando las rutas) en un bucle for

JQuery agrega imágenes en un bucle for

No se pueden escribir fotogramas en un video con multiprocesamiento + cv2

¿Cómo guardar imágenes devueltas con un bucle en R en el disco duro?

un script de Powershell para hacer hash Compare 2 carpetas llenas de archivos de video con subcarpetas en el interior

Hacer formulario con entradas usando un bucle en perl Tk

Cómo hacer un bucle de Samplers con diferentes intervalos en el mismo bucle usando JMeter

TOP Lista

CalienteEtiquetas

Archivo