11  Introdução ao OpenCV

O OpenCV (Open Source Computer Vision Library) é uma biblioteca amplamente utilizada para o desenvolvimento de aplicações em visão computacional e processamento digital de imagens. Criado originalmente pela Intel, o OpenCV é distribuído como software livre e oferece suporte a múltiplas linguagens, com grande destaque para Python e C++.

Este capítulo apresenta os conceitos fundamentais do OpenCV, sua estrutura básica e exemplos práticos de uso.

11.1 Visão Computacional e OpenCV

A visão computacional tem como objetivo permitir que sistemas computacionais interpretem informações visuais provenientes do mundo real. Para isso, utiliza técnicas de processamento de imagens, reconhecimento de padrões e aprendizado de máquina.

O OpenCV disponibiliza implementações eficientes desses algoritmos, facilitando o desenvolvimento de aplicações práticas.

11.2 Estrutura da Biblioteca OpenCV

Em Python, o OpenCV é acessado principalmente por meio do módulo cv2. Após a instalação, a biblioteca pode ser importada da seguinte forma:

import cv2

11.3 Leitura e Exibição de Imagens

A leitura de imagens é feita com a função imread, e a exibição com imshow.

import cv2

imagem = cv2.imread("imagem.jpg")
cv2.imshow("Imagem Original", imagem)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.4 Representação de Imagens no OpenCV

No OpenCV, imagens coloridas são representadas no formato BGR (Blue, Green, Red), e não RGB.

A conversão para tons de cinza pode ser feita da seguinte forma:

imgcinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
cv2.imshow("Imagem em Cinza", imgcinza)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.5 Redimensionamento de Imagens

O redimensionamento é uma operação comum no processamento de imagens:

imgresize = cv2.resize(imagem, (300, 200))
cv2.imshow("Imagem Redimensionada", imgresize)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.6 Filtragem e Redução de Ruído

Filtros são usados para suavizar imagens e reduzir ruídos. Um dos mais comuns é o filtro Gaussiano:

imgsuave = cv2.GaussianBlur(imagem, (5, 5), 0)
cv2.imshow("Imagem Suavizada", imgsuave)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.7 Detecção de Bordas

A detecção de bordas é fundamental para a identificação de objetos. Um método amplamente utilizado é o detector de bordas de Canny:

bordas = cv2.Canny(imagem_cinza, 100, 200)
cv2.imshow("Bordas Detectadas", bordas)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.8 Limiarização (Threshold)

A limiarização converte uma imagem em tons de cinza para uma imagem binária:

_, imgbin = cv2.threshold(imagem_cinza, 127, 255, cv2.THRESH_BINARY)
cv2.imshow("Imagem Binária", imgbin)
cv2.waitKey(0)
cv2.destroyAllWindows()

11.9 Aplicações Práticas do OpenCV

Com essas operações básicas, é possível desenvolver aplicações como:

  • reconhecimento facial;
  • sistemas de vigilância;
  • análise de imagens médicas;
  • visão computacional em robótica;
  • processamento de vídeos em tempo real.

11.10 Considerações Finais

O OpenCV fornece uma base sólida para o desenvolvimento de aplicações em visão computacional. A compreensão das operações fundamentais — leitura, conversão, filtragem, segmentação e detecção de bordas — é essencial para avançar em aplicações mais complexas.

Este capítulo apresentou os conceitos iniciais e exemplos práticos que servirão como base para os próximos estudos em processamento e interpretação de imagens.