Extraer frames de un video con Python – openCV

En este post describimos como extraer frames de un video usando python y la biblioteca openCV.

El video gato.mp4 tiene una duración de 6 segundos y 30 frames por segundo, al extraer los frames aproximadamente obtendremos 180 frames que serán nombrados en este formato IMG_0001.jpgIMG_0002.jpgIMG_0003.jpg

En la carpeta extraerFrames está el archivo .py, el video y una carpeta donde se guardará los frames extraídos

Descarga estos archivos en GitHub

El código es el siguiente, debes cambiar el path a tu dirección loca donde se guardarán los frames

Desplegar la explicación del código

  1. import cv2 importar openCV
  2. capture = cv2.VideoCapture('gato.avi') leer el archivo gato.mp4
  3. cont = 0 contador iniciado en 0 se usará para nombrar consecutivamente los frames
  4. path = '/home/kipuna/Escritorio/extraerFrames/frames/' ubicación donde se almacenarán los frames extraídos
  5. while (capture.isOpened()):
    • capture.isOpened() Devuelve True si la captura de video ya se ha inicializado.
  6. ret, frame = capture.read(), usa el objeto capture para leer la información de la webCam
    • frame información del video frame por frame
    • ret valor booleano TRUE si frame es leído correctamente
  7. if (ret == True), si ret es True ejecutará lo que este dentro de la sentencia if.
  8. cv2.imwrite(path + 'IMG_%04d.jpg' % cont, frame) escribe los frames en la ubicación especificada.
    • path dirección donde se guardarán los frames
    • 'IMG_%04d.jpg' nombre de las imágenes, se guardará como IMG_0001.jpgIMG_0002.jpgIMG_0003.jpg …
    • cont += 1 la variable contador aumenta un valor en cada iteración
  9. if (cv2.waitKey(1) == ord('s')):, sentencia if compara dos valores, si se presiona la tecla s cumple la condición termina el bucle. Revisar también Cómo funciona (cv2.waitKey(1) & 0xFF) == ord(‘s’)
  10. capture.release() para cerrar el dispositivo de captura
  11. cv2.destroyAllWindows() cerrar todas las ventanas
import cv2

capture = cv2.VideoCapture('gato.mp4')
cont = 0
path = '/home/kipuna/Escritorio/extraerFrames/frames/'

while (capture.isOpened()):
    ret, frame = capture.read()
    if (ret == True):
        cv2.imwrite(path + 'IMG_%04d.jpg' % cont, frame)    
        cont += 1
        if (cv2.waitKey(1) == ord('s')):
            break
    else:
        break

capture.release()
cv2.destroyAllWindows()

1 comentario en “Extraer frames de un video con Python – openCV”

  1. Pingback: Guardar frames cada cierto tiempo con Python – openCV – Kipuna Ec

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *