Guardar video operado desde una cámara web usando OpenCV

OpenCV es una amplia biblioteca que ayuda a proporcionar varias funciones para operaciones de imagen y video. Con OpenCV, podemos realizar operaciones en el video de entrada. OpenCV también nos permite guardar ese video operado para su uso posterior. Para guardar imágenes, usamos cv2.imwrite() que guarda la imagen en una ubicación de archivo específica. Pero, para guardar un video grabado, creamos un objeto Video Writer .

En primer lugar, especificamos la variable fourcc . FourCC es un código de 4 bytes que se usa para especificar el códec de video. La lista de códigos se puede obtener en Video Codecs by FourCC . Los códecs para Windows son DIVX y para OSX son avc1, h263. El código FourCC se pasa como cv2.VideoWriter_fourcc(*’MJPG’) para MJPG y cv2.VideoWriter_fourcc(*’XVID’) para DIVX.

Luego, se usa la función cv2.VideoWriter() .

cv2.VideoWriter( filename, fourcc, fps, frameSize )

Los parámetros son:

  1. nombre de archivo: especifica el nombre del archivo de vídeo de salida.
  2. fourcc: (para grabar) Definición del códec
  3. fps: velocidad de fotogramas definida del flujo de vídeo de salida
  4. frameSize: Tamaño de los fotogramas de vídeo
# Python program to illustrate 
# saving an operated video
  
# organize imports
import numpy as np
import cv2
  
# This will return video from the first webcam on your computer.
cap = cv2.VideoCapture(0)  
  
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
  
# loop runs if capturing has been initialized. 
while(True):
    # reads frames from a camera 
    # ret checks return at each frame
    ret, frame = cap.read() 
  
    # Converts to HSV color space, OCV reads colors as BGR
    # frame is converted to hsv
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
      
    # output the frame
    out.write(hsv) 
      
    # The original input frame is shown in the window 
    cv2.imshow('Original', frame)
  
    # The window showing the operated video stream 
    cv2.imshow('frame', hsv)
  
      
    # Wait for 'a' key to stop the program 
    if cv2.waitKey(1) & 0xFF == ord('a'):
        break
  
# Close the window / Release webcam
cap.release()
  
# After we release our webcam, we also release the output
out.release() 
  
# De-allocate any associated memory usage 
cv2.destroyAllWindows()

Salida:
La pantalla de salida muestra dos ventanas. La ventana llamada ‘Original’ muestra cuadros de entrada, mientras que la ventana ‘cuadro’ muestra la secuencia de video operada. Además, se graba y guarda un video con el nombre ‘salida’ en la misma ubicación del archivo con una velocidad de cuadro y un tamaño de cuadro predefinidos. Generalmente tiene el formato .avi. El video guardado es así: Video de salida

El video de entrada también se puede operar en otros espacios de color, como en escala de grises

# Python program to illustrate 
# saving an operated video
  
# organize imports
import numpy as np
import cv2
  
# This will return video from the first webcam on your computer.
cap = cv2.VideoCapture(0)  
  
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
  
# loop runs if capturing has been initialized. 
while(True):
    # reads frames from a camera 
    # ret checks return at each frame
    ret, frame = cap.read() 
  
    # Converts to grayscale space, OCV reads colors as BGR
    # frame is converted to gray
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
      
    # output the frame
    out.write(gray) 
      
    # The original input frame is shown in the window 
    cv2.imshow('Original', frame)
  
    # The window showing the operated video stream 
    cv2.imshow('frame', gray)
  
      
    # Wait for 'a' key to stop the program 
    if cv2.waitKey(1) & 0xFF == ord('a'):
        break
  
# Close the window / Release webcam
cap.release()
  
# After we release our webcam, we also release the out-out.release() 
  
# De-allocate any associated memory usage 
cv2.destroyAllWindows()

Producción:

Un archivo de video de este video operado se guarda en la misma ubicación de archivo que vimos anteriormente.

Este método puede ayudarnos a crear nuestro propio conjunto de datos para entrenar datos en proyectos/modelos, grabar desde nuestra cámara web y realizar las operaciones necesarias y también crear el video en diferentes espacios de color.

Consulte este enlace para visualizar contenido en diferentes espacios de color:
https://www.geeksforgeeks.org/python-visualizing-image-in- different-color-spaces/

Referencias:

  1. https://docs.opencv.org/3.4/dd/d9e/classcv_1_1VideoWriter.html
  2. https://docs.opencv.org/3.1.0/dd/d43/tutorial_py_video_display.html
  3. https://en.wikipedia.org/wiki/FourCC
  4. https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html

Publicación traducida automáticamente

Artículo escrito por rishabhsingh1304 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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