Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

Visão Computacional com Python e OpenCV: Reconhecimento de Imagens na Prática

Visão Computacional com Python e OpenCV: Reconhecimento de Imagens na Prática

O que é Visão Computacional?

A Visão Computacional (Computer Vision) é um campo da inteligência artificial que capacita máquinas a interpretar e tomar decisões com base em dados visuais do mundo real — imagens, vídeos e streams ao vivo. Com o avanço de bibliotecas como OpenCV (Open Source Computer Vision Library) e frameworks de deep learning, tornou-se possível construir sistemas que reconhecem rostos detectam objetos em tempo real e até dirigem carros de forma autônoma.

Neste artigo vamos explorar os conceitos fundamentais da Visão Computacional com Python e OpenCV desde o carregamento básico de imagens até técnicas avançadas como detecção de objetos e reconhecimento facial.

Introdução ao OpenCV

O OpenCV é a biblioteca open source mais popular para processamento de imagens e visão computacional. Criada pela Intel em 1999 ela oferece mais de 2500 algoritmos otimizados para tarefas visuais. Com bindings para Python C++ Java e JavaScript é a escolha padrão tanto para prototipagem rápida quanto para sistemas de produção.

Para instalar o OpenCV no seu ambiente Python basta usar o pip:

pip install opencv-python opencv-contrib-python numpy matplotlib

O pacote opencv-python contém os módulos principais enquanto opencv-contrib-python adiciona funcionalidades extras como algoritmos de tracking e reconhecimento facial.

Manipulação Básica de Imagens

Vamos começar com as operações fundamentais: ler exibir e salvar imagens.

import cv2
import matplotlib.pyplot as plt

# Ler uma imagem
img = cv2.imread("exemplo.jpg")

# Converter BGR para RGB (OpenCV carrega como BGR)
img_rgb = cv2.cvtColor(img cv2.COLOR_BGR2RGB)

# Exibir com matplotlib
plt.imshow(img_rgb)
plt.title("Imagem Original")
plt.axis("off")
plt.show()

# Salvar imagem processada
cv2.imwrite("saida.jpg" img_rgb[:, : ::-1])  # Converte de volta para BGR

Importante: O OpenCV carrega imagens no formato BGR (Blue Green Red) enquanto o matplotlib espera RGB. Essa diferença sutil é uma das fontes mais comuns de bugs para iniciantes. Sempre converta com cv2.COLOR_BGR2RGB antes de exibir.

Processamento de Imagens

O OpenCV oferece dezenas de funções para transformar e melhorar imagens. Veja as mais úteis:

Redimensionamento

# Redimensionar para 300x200 pixels
img_redim = cv2.resize(img_rgb (300 200))

# Redimensionar mantendo proporção (fator 0.5)
escala = 0.5
largura = int(img_rgb.shape[1] * escala)
altura = int(img_rgb.shape[0] * escala)
img_menor = cv2.resize(img_rgb (largura altura))

Filtros e Suavização

# Desfoque Gaussiano
img_blur = cv2.GaussianBlur(img_rgb (5 5) 0)

# Detecção de bordas (Canny)
img_bordas = cv2.Canny(img_rgb 100 200)

# Limiarização (threshold)
img_cinza = cv2.cvtColor(img cv2.COLOR_BGR2GRAY)
_ img_thresh = cv2.threshold(img_cinza 127 255 cv2.THRESH_BINARY)

Transformações Morfológicas

# Erosão e Dilatação
kernel = cv2.getStructuringElement(cv2.MORPH_RECT (5 5))
img_erodida = cv2.erode(img_binary kernel iterations=1)
img_dilatada = cv2.dilate(img_binary kernel iterations=1)

Detecção de Objetos com Haar Cascades

O OpenCV inclui classificadores pré-treinados chamados Haar Cascades que permitem detectar rostos olhos sorrisos e outros objetos com poucas linhas de código.

# Carregar classificador pré-treinado para faces
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)

# Detectar faces na imagem
faces = face_cascade.detectMultiScale(
    img_cinza
    scaleFactor=1.1
    minNeighbors=5
    minSize=(30 30)
)

# Desenhar retângulos ao redor das faces
for (x y w h) in faces:
    cv2.rectangle(img_rgb (x y) (x+w y+h) (0 255 0) 2)

print(f"{len(faces)} face(s) detectada(s)!")

O parâmetro scaleFactor controla o quanto a imagem é reduzida a cada escala (1.1 = 10%) enquanto minNeighbors define quantos vizinhos positivos são necessários para confirmar uma detecção. Valores mais altos reduzem falsos positivos.

Segmentação de Imagens

A segmentação divide uma imagem em regiões de interesse. Técnicas comuns incluem:

  • Segmentação por cor: use espaços de cor como HSV para isolar objetos por tonalidade. Ideal para objetos com cores distintas.
  • Watershed: algoritmo baseado em marcadores para separar objetos que se tocam.
  • GrabCut: segmentação interativa que extrai o primeiro plano do fundo com mínima intervenção do usuário.
# Segmentação por cor no espaço HSV
img_hsv = cv2.cvtColor(img cv2.COLOR_BGR2HSV)

# Faixa de cor azul
azul_baixo = (100 50 50)
azul_alto = (130 255 255)
mascara = cv2.inRange(img_hsv azul_baixo azul_alto)

# Aplicar máscara
resultado = cv2.bitwise_and(img_rgb img_rgb mask=mascara)

Deep Learning para Visão Computacional

Para tarefas mais avançadas como classificação de objetos detecção precisa e segmentação semântica o deep learning oferece resultados superiores. O OpenCV suporta modelos treinados em frameworks como TensorFlow PyTorch e Caffe.

# Exemplo: Classificação com MobileNet (modelo leve)
net = cv2.dnn.readNetFromCaffe("MobileNetSSD_deploy.prototxt" "MobileNetSSD_deploy.caffemodel")

blob = cv2.dnn.blobFromImage(img 0.007843 (300 300) 127.5)
net.setInput(blob)
deteccoes = net.forward()

for i in range(deteccoes.shape[2]):
    confianca = deteccoes[0 0 i 2]
    if confianca > 0.5:
        classe = int(deteccoes[0 0 i 1])
        # Desenhar bounding box e rótulo

Modelos como YOLO (You Only Look Once) e SSD (Single Shot Detector) permitem detecção de objetos em tempo real rodando a mais de 30 FPS em GPUs modernas.

Aplicações Práticas

  • Reconhecimento Facial: sistemas de segurança autenticação biométrica e filtros de redes sociais.
  • Carros Autônomos: detecção de pedestres placas de trânsito e obstáculos.
  • Visão Industrial: inspeção de qualidade leitura de códigos de barras e controle de robôs.
  • Saúde: análise de exames de imagem como raio-X tomografia e ressonância magnética.
  • Varejo: contagem de pessoas análise de fluxo e checkout automatizado.

Conclusão

A Visão Computacional com Python e OpenCV abre um universo de possibilidades para desenvolvedores. Começando com operações básicas de processamento de imagens e evoluindo para deep learning é possível construir sistemas incrivelmente poderosos com relativamente pouco código.

Para continuar seus estudos explore a documentação oficial do OpenCV e pratique com datasets públicos como o COCO (Common Objects in Context) e o ImageNet. O melhor aprendizado vem da prática: pegue uma imagem do seu celular e comece a experimentar!

Craft XP
Craft XP