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