Começando com Vídeos

OpenCVBeginner
Pratique Agora

Introdução

Bem-vindo a este laboratório sobre como começar a trabalhar com vídeos usando OpenCV-Python! OpenCV (Open Source Computer Vision) é uma biblioteca poderosa projetada para processamento de imagens, aprendizado de máquina e aplicações de visão computacional. Neste laboratório, focaremos em como trabalhar com vídeos em OpenCV-Python.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 86%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Lendo um Vídeo e Salvando um Frame

Para capturar um vídeo, você precisa criar um objeto VideoCapture. Aqui está um exemplo de como ler um vídeo e salvar cada frame na pasta frame:

Caminho do vídeo: /home/labex/project/video.mp4

Caminho do arquivo: /home/labex/project/read_video.py

Abra o arquivo read_video.py. Em seguida, insira o seguinte código.

import cv2
import os

## Check if the 'frame' folder exists. Create it if it doesn't.
folder = os.path.exists('frame')
if not folder:
 os.makedirs('frame')
 print('new folder...')
 print('OK')
else:
 print('There is this folder!')

## Frame number
number = 0

## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')

while True:
    ## Read a frame from the video
    ret, frame = cap.read()

    ## Frame number added
    number = number + 1
    if ret:
        ## Save the frame
        cv2.imwrite(f"./frame/save{number}.jpg", frame)

    ## Exit the loop
    else:
        break

print('Each frame has been saved to the frame folder')

print('Video read successfully!')

## Release the VideoCapture object
cap.release()

Neste exemplo, criamos um objeto VideoCapture passando o caminho para o arquivo de vídeo que queremos ler. Em seguida, usamos um loop while para ler cada frame do vídeo usando o método read(). Se o frame for lido com sucesso, usamos o método imwrite() para salvar o frame. Finalmente, liberamos o objeto VideoCapture.

Você pode executar o seguinte comando no terminal para executar.

python /home/labex/project/read_video.py

Ou você pode simplesmente clicar no botão como este Run Python File no canto superior direito para executar.

Depois, espere o Terminal exibir "Video read successfully!" e você verá as imagens de cada frame na pasta frame.

Escrevendo e Salvando um Vídeo

Para escrever e salvar um vídeo, você precisa criar um objeto VideoWriter. Aqui está um exemplo de como escrever e salvar um vídeo:

Caminho do vídeo: /home/labex/project/video.mp4

Caminho do arquivo: /home/labex/project/write_video.py

Abra o arquivo write_video.py. Em seguida, insira o seguinte código.

import cv2

## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')

## Get the video frame size and frame rate
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))

## Create a VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))

while True:
    ## Read a frame from the video
    ret, frame = cap.read()

    if ret:
        ## Process the frame
        ## ...

        ## Write the processed frame to the output video
        out.write(frame)

    else:
        break

print('Video save successfully!')

## Release the VideoCapture and VideoWriter objects
cap.release()
out.release()

Neste exemplo, criamos um objeto VideoCapture passando o caminho do arquivo de vídeo a ser lido. Em seguida, obtemos o tamanho do frame do vídeo e a taxa de quadros usando o método get(). Em seguida, criamos um objeto VideoWriter passando o nome do arquivo de saída, o código fourcc, a taxa de quadros e o tamanho do frame. O código fourcc é um código de quatro bytes usado para especificar o codec de vídeo. Neste exemplo, usamos o codec XVID.

Em seguida, usamos um loop while para ler cada frame do vídeo usando o método read(). Se o frame for lido com sucesso, processamos (por exemplo, aplicamos filtros) e o escrevemos no vídeo de saída usando o método write() do objeto VideoWriter. Finalmente, liberamos os objetos VideoCapture e VideoWriter.

Você pode executar o seguinte comando no terminal para executar.

python /home/labex/project/write_video.py

Ou você pode simplesmente clicar no botão como este Run Python File no canto superior direito para executar.

Depois, espere o Terminal exibir "Video save successfully!" e você verá um vídeo de saída chamado output.avi na pasta do projeto. No entanto, o ambiente atual não suporta a visualização de arquivos de vídeo. Você precisará baixar o arquivo localmente, como mostrado abaixo, e, em seguida, visualizá-lo usando o reprodutor de vídeo.

Download Video File
Download Video File

Resumo

Parabéns! Agora você aprendeu como ler, exibir, escrever e salvar vídeos usando OpenCV-Python. Com essas habilidades básicas, você pode começar a explorar técnicas e aplicações de visão computacional mais avançadas.

Sinta-se à vontade para expandir este tutorial experimentando diferentes formatos de vídeo, aplicando filtros aos frames ou experimentando o rastreamento e a detecção de objetos. As possibilidades são infinitas!