Processamento de Vídeo
Acesse a versão completa deste relatório no Microsoft Word: Abrir no SharePoint
Este relatório documenta os procedimentos e resultados do Laboratório 1 da disciplina de Processamento de Vídeo, cujo objetivo principal foi iniciar os trabalhos com a biblioteca OpenCV e estabelecer a base para o desenvolvimento de tarefas de visão computacional.
O experimento focou na preparação e configuração do ambiente, no estudo dos comandos fundamentais de entrada e saída de imagens e vídeos a partir de arquivos e na implementação de scripts para captura de mídia utilizando a webcam.
Este documento visa servir como referência técnica para a equipe sobre a programação de manipulação de mídias e câmeras.
O processamento de vídeo e imagem se baseia na manipulação de dados em formato de matriz, sendo a biblioteca OpenCV a ferramenta central, responsável por fornecer as rotinas de Entrada/Saída.
No OpenCV, uma imagem estática é carregada como uma matriz NumPy, onde cada elemento é um pixel de cor, sendo o padrão de canais o BGR (Azul, Verde, Vermelho).
Já o vídeo é tratado como uma sequência de imagens estáticas, chamadas de frames, que são processadas individualmente em um loop através do objeto `cv2.VideoCapture` e exibidas na tela a uma taxa de FPS (Frames por Segundo), métrica fundamental para a avaliação do desempenho de qualquer algoritmo de processamento em tempo real.
O que é: Uma distribuição Linux de código aberto.
Finalidade: Fornece o sistema operacional e o ambiente de desenvolvimento onde todas as ferramentas serão instaladas e executadas.
O que é: Interface de linha de comando (CLI).
Finalidade: Utilizado para executar comandos do sistema, gerenciar ambientes, instalar softwares e rodar programas.
O que é: Miniconda é um gerenciador de pacotes e ambientes leve para Python.
Finalidade:
O que é: Biblioteca de Visão Computacional de Código Aberto.
Finalidade: Principal biblioteca usada para tarefas de visão computacional e processamento de imagens/vídeos (detecção de objetos, transformações, extração de características etc.).
Variantes:
Essenciais para compilar e executar o OpenCV a partir do código-fonte:
O que é: Ferramenta auxiliar para configurar flags de compilação e linkagem de bibliotecas.
Finalidade: Verifica se o OpenCV está instalado e acessível (pkg-config --modversion opencv4).
O que sao: Linguagens de programação usadas para rodar os scripts com OpenCV.
Finalidade: Fornece o ambiente de programação para desenvolver tarefas de visão computacional.
O que é: Reprodutor multimídia gratuito e de código aberto.
Finalidade: Permite visualizar vídeos e imagens fora do OpenCV, útil para testes e validação de resultados do processamento de vídeo.
Inicialmente, utilizado o codigo fornecido pelo professor, visto abaixo:
import numpy as np
import cv2 as cv
img = cv.imread('messi5.jpg')
cv.imshow('image',img)
k = cv.waitKey(0)
if k == ord('s'):
cv.imwrite('messi5.png', img)
if k == 27: # wait for ESC key to exit
cv.destroyAllWindows()
Alteracoes realizadas:
Estudar o tutorial da biblioteca openCV e detalhar os 5 codigos fornecidos.
Le video da pasta Resources e o reproduz, salvando-o frame a frame no arquivo output.avi, ate que seja interrompido pressionando a letra 'q'.
Le frames capturados pela webcam e os reproduz, salvando-os frame a frame no arquivo output.avi, ate que seja interrompido pressionando a letra 'q'.
Le frames capturados pela webcam e os reproduz, ate que seja interrompido pressionando a letra 'q'.
Le video da pasta Resources e o reproduz, ate que seja interrompido pressionando a letra 'q'.
Le uma serie de imagens da Resources e as reproduz sequencialmente de forma rapida, formando um video ate que seja interrompido pressionando a letra 'q'.
Para executar os programas utilizando por padrao o arquivo fornecido pelo moodle, basta ajustar o caminho ate o arquivo visto nos programas *_from_file.
Inicialmente, foi implementado um programa de leitura de vídeo a partir de um arquivo local utilizando a classe cv2.VideoCapture. Esse experimento teve como objetivo compreender o processo básico de:
Desenvolvimento de programa para gravação utilizando cv2.VideoWriter
Objetivo: Registrar e salvar transmissões para análise posterior.
output_video_from_web_cam.avi output_video_from_web_cam_fast 2.avi
Foi possível reproduzir vídeos e extrair informações como FPS e número de quadros.
O vídeo capturado foi salvo no formato .avi, com qualidade satisfatória e sincronização estável entre captura e gravação.
O processamento ocorreu sem perdas visuais perceptíveis, demonstrando que o OpenCV trata sequências de imagens de forma eficiente.
O cv2.VideoCapture é versátil, podendo receber dados de diferentes fontes (arquivo, câmera, RTMP, sequência de imagens).
O desempenho depende fortemente do frame rate e do tempo de espera configurado em cv2.waitKey().
O cv2.VideoWriter requer que a taxa de quadros e o tamanho dos quadros sejam compatíveis com a fonte de entrada.
O uso de formatos padronizados (ex.: MJPG) e caminhos corretos de escrita evitou erros relacionados a codecs e permissões.
O experimento permitiu compreender de forma prática os fundamentos da captura, exibição e gravação de imagens e vídeos com OpenCV.
A importância de verificar o retorno (ret) das funções
de captura para evitar falhas silenciosas.
A necessidade de liberar recursos (release()) ao final
da execução para evitar travamentos.
A diferença entre fluxos locais e remotos, principalmente quanto à latência e estabilidade.
O papel do cv2.VideoWriter na gravação e a influência
dos parâmetros de codec e FPS na qualidade final.
De modo geral, os programas desenvolvidos podem servir como base para futuras aplicações de visão computacional, como: