[OpenCV-Python] 5 videos

Características de OpenCV-Python: II Gui en OpenCV

5 videos

Objetivos
  • Aprender a leer archivos de video, mostrar videos, guardar archivos de video
  • Aprender a obtener y mostrar videos de la cámara
  • Aprenderá estas funciones: cv2.VideoCapture (), cv2.VideoWrite ()

5.1 Capturar video con cámara

A menudo necesitamos usar una cámara para capturar imágenes en tiempo real. OpenCV proporciona una interfaz muy simple para esta aplicación. Usemos la cámara para capturar un video y convertirlo a video en escala de grises para mostrarlo. Comencemos con esta sencilla tarea.
  Para obtener el video, debe crear un objeto VideoCapture. Su parámetro puede ser el número de índice del dispositivo o un archivo de video. El número de índice del dispositivo es para especificar la cámara que se utilizará. La computadora portátil general tiene una cámara incorporada. Entonces el parámetro es 0. Puede seleccionar otras cámaras configurándolas en 1 u otras. Después de eso, puede capturar el video cuadro por cuadro. Pero al final, no olvides dejar de capturar el video.

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

cap.read () devuelve un valor booleano (Verdadero / Falso). Si el marco leído es correcto, es Verdadero. Entonces, al final, puede verificar si el archivo de video ha llegado al final verificando su valor de retorno.
  A veces, es posible que la tapa no pueda inicializar correctamente el dispositivo de la cámara. En este caso, el código anterior reportará un error. Puede usar cap.isOpened () para verificar si la inicialización es exitosa. Si el valor de retorno es Verdadero, no hay problema. De lo contrario, use la función cap.open ().
Puede usar la función cap.get (propId) para obtener información sobre los parámetros del video. Aquí propId puede ser cualquier número entero entre 0 y 18. Cada número representa un atributo del video, consulte la tabla a continuación

Algunos de estos valores se pueden modificar usando cap.set (propId, value) y value es el nuevo valor que desea establecer.
  Por ejemplo, puedo usar cap.get (3) y cap.get (4) para ver el ancho y el alto de cada marco.
  El valor obtenido por defecto es 640X480. Pero puedo usar ret = cap.set (3,320) y ret = cap.set (4,240) para cambiar el ancho y el alto a 320X240. Nota: Cuando su programa informa de un error, lo primero que debe verificar es si su cámara puede funcionar normalmente en otros programas (como Cheese en Linux).

5.2 Reproducir video desde un archivo

Al igual que con la captura desde la cámara, solo necesita cambiar el número de índice del dispositivo por el nombre del archivo de video. Al reproducir cada cuadro, use cv2.waiKey () para establecer una duración adecuada. Si la configuración es demasiado baja, el video se reproducirá muy rápido, si la configuración es demasiado alta, se reproducirá muy lentamente (puede usar este método para controlar la velocidad del video). Normalmente, 25 milisegundos son suficientes.

import numpy as np
import cv2

cap = cv2.VideoCapture('vtest.avi')

while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Nota: debe asegurarse de haber instalado la versión adecuada de ffmpeg o gstreamer. Si comete un error, será un dolor de cabeza.

5.3 Guardar video

Después de capturar el video y procesar cada cuadro, queremos guardar el video. Cuando llegue la imagen, es muy simple y solo use cv2.imwrite (). Pero para el video, se debe trabajar más.
  Esta vez vamos a crear un objeto VideoWriter. Debemos determinar el nombre de un archivo de salida. A continuación, especifique el código FourCC (descrito a continuación). También es necesario determinar la frecuencia de reproducción y el tamaño del cuadro. La última es la etiqueta isColor. Si es Verdadero, cada fotograma es una imagen en color; de lo contrario, es una imagen en escala de grises.
FourCC es un código de 4 bytes que se utiliza para determinar el formato de codificación del video. La lista de códigos disponibles se puede encontrar en fourcc.org. Esto depende de la plataforma. Los siguientes codificadores me resultan útiles.
  • En Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID es más preferible. MJPG da como resultado un video de gran tamaño. X264 da un video de muy pequeño tamaño)
  • En Windows: DIVX (Más para probar y agregar)
  • En OSX: (No tengo acceso a OSX. ¿Alguien puede llenar esto?)

El código FourCC se pasa al programa en el siguiente formato, tomando MJPG como ejemplo:

cv2.cv.FOURCC ('M', 'J', 'P', 'G') o cv2.cv.FOURCC (* 'MJPG').

El siguiente código es para capturar video de la cámara, rotar cada cuadro en la dirección horizontal y guardarlo.

import numpy as np
import cv2

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))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        frame = cv2.flip(frame,0)

        # write the flipped frame
        out.write(frame)

        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

Para obtener más información, preste atención a la cuenta oficial:
img

Supongo que te gusta

Origin blog.csdn.net/yegeli/article/details/113405345
Recomendado
Clasificación