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.
Todo o código fonte e materiais utilizados neste projeto estão disponíveis em nosso repositório GitHub:
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. Por padrão, o OpenCV usa o espaço de cores BGR (Azul, Verde, Vermelho), mas também suporta outros espaços de cores importantes:
A detecção de bordas é uma técnica fundamental que identifica pontos em uma imagem onde a intensidade luminosa muda bruscamente. Os principais operadores incluem:
No vídeo, estas técnicas são aplicadas frame a frame, sendo cada quadro processado individualmente através do objeto `cv2.VideoCapture` e exibido na tela a uma taxa de FPS (Frames por Segundo), que é uma métrica fundamental para a avaliação do desempenho do 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.
Desenvolvemos um sistema avançado de detecção e rastreamento de objetos coloridos com as seguintes características:
# Definição das faixas de cores em HSV
colors = {
'red': {
'ranges': [(0, 50, 50), (10, 255, 255)],
'ranges2': [(170, 50, 50), (180, 255, 255)]
},
'blue': {'ranges': [(100, 50, 50), (130, 255, 255)]},
'green': {'ranges': [(40, 50, 50), (80, 255, 255)]},
'yellow': {'ranges': [(20, 50, 50), (40, 255, 255)]}
}
Desenvolvimento de programa para gravação para detecção multicolorida
Vídeos em anexo no link Sharepoint no topo da página
O sistema conseguiu detectar e rastrear com sucesso objetos de diferentes cores simultaneamente, com boa precisão na segmentação das cores alvo.
As trackbars permitiram ajuste fino dos parâmetros HSV em tempo real, facilitando a calibração para diferentes condições de iluminação.
Implementação bem-sucedida do sistema de captura de frames e gravação de vídeos, com organização automática por timestamp e separação entre original e processado.
O sistema manteve bom desempenho mesmo com múltiplas janelas e processamento em tempo real, demonstrando eficiência na implementação.
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 desenvolvimento do sistema de detecção multicolorida demonstrou com sucesso a aplicação prática de técnicas avançadas de processamento de imagem e visão computacional usando OpenCV.
O sistema alcançou seus objetivos principais de detectar e rastrear múltiplos objetos coloridos simultaneamente, oferecendo uma interface interativa para ajuste fino dos parâmetros e funcionalidades robustas de gravação e análise.
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: