OpenCV é uma vasta biblioteca que ajuda no fornecimento de várias funções para operações de imagem e vídeo. Com o OpenCV, podemos realizar operações no vídeo de entrada. O OpenCV também nos permite salvar o vídeo operado para uso posterior. Para salvar imagens, usamos cv2.imwrite() que salva a imagem em um local de arquivo especificado. Mas, para salvar um vídeo gravado, criamos um objeto Video Writer .

Em primeiro lugar, especificamos a variável fourcc . FourCC é um código de 4 bytes usado para especificar o codec de vídeo. A lista de códigos pode ser obtida em Video Codecs da FourCC . Os codecs para Windows são DIVX e para OSX são avc1, h263. O código FourCC é passado como cv2.VideoWriter_fourcc (* 'MJPG') para MJPG e cv2.VideoWriter_fourcc (* 'XVID') para DIVX.

Em seguida, a função cv2.VideoWriter() é usada.

cv2.VideoWriter (nome do arquivo, fourcc, fps, frameSize)

Os parâmetros são:

  1. nome do arquivo: especifica o nome do arquivo de vídeo de saída.
  2. fourcc: (para gravação) Definindo o codec
  3. fps: taxa de quadros definida do fluxo de vídeo de saída
  4. frameSize: tamanho dos frames do vídeo
import numpy as np 
import cv2 
cap = cv2.VideoCapture(0)   
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480)) 
while(True): 
    
    
    ret, frame = cap.read()  
  
    
    
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 
      
    
    out.write(hsv)  
      
    
    cv2.imshow('Original', frame) 
  
    
    cv2.imshow('frame', hsv) 
  
      
    
    if cv2.waitKey(1) & 0xFF == ord('a'): 
        break
cap.release() 
out.release()  
cv2.destroyAllWindows() 

Saída:
A tela de saída mostra duas janelas. A janela chamada 'Original' mostra os quadros de entrada, enquanto a janela 'quadro' mostra a sequência de vídeo operada. Além disso, um vídeo é gravado e salvo com o nome 'saída' no mesmo local do arquivo com taxa de quadros e tamanho de quadros predefinidos. Geralmente é do formato .avi. O vídeo salvo é assim: Vídeo de saída




O vídeo de entrada pode ser operado em outros espaços de cores também, como em tons de cinza

import numpy as np 
import cv2 
cap = cv2.VideoCapture(0)   
fourcc = cv2.VideoWriter_fourcc(*'XVID') 
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480)) 
while(True): 
    
    
    ret, frame = cap.read()  
  
    
    
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
      
    
    out.write(gray)  
      
    
    cv2.imshow('Original', frame) 
  
    
    cv2.imshow('frame', gray) 
  
      
    
    if cv2.waitKey(1) & 0xFF == ord('a'): 
        break
cap.release() 
  
  
cv2.destroyAllWindows() 

Resultado:

Um arquivo de vídeo deste vídeo operado é salvo no mesmo local de arquivo que vimos acima.

Este método pode nos ajudar a criar nosso próprio conjunto de dados para dados de treinamento em projetos / modelos, para gravar de nossa webcam e fazer as operações necessárias e também criar o vídeo em diferentes espaços de cores.

Consulte este link para visualizar o conteúdo em diferentes espaços de cores:
https://acervolima.com/python--visualizando-imagem-em-diferentes-espacos-de-cores/

Referências:

  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

geeks-digest-img