Processamento de Imagens em Python — Parte 3 da série Herez
Visão geral: esta é a terceira publicação da série Herez sobre bibliotecas Python. Aqui detalhamos OpenCV, Mahotas, scikit-image, pgmagick e SimpleITK, com exemplos práticos usados em projetos reais por Herez. Esses exemplos e outros projetos estão disponíveis nos repositórios GitHub e GitLab da Herez.
Publicado por Herez em
Como usar este post
Cada seção traz: descrição, por que usar, instalação, exemplo prático e contexto de projeto. Os trechos de código são reproduzíveis e foram aplicados em projetos reais da Herez; os repositórios contêm notebooks e pipelines completos.
Resumo rápido
| Biblioteca | Função principal | Quando usar |
|---|---|---|
| OpenCV | Visão computacional e processamento em tempo real | Detecção, tracking, transformações e pipelines de CV |
| Mahotas | Operações de imagem rápidas em C++ | Filtragem, morfologia e extração de features |
| scikit-image | Algoritmos de processamento e análise de imagem | Segmentação, filtros e transformadas científicas |
| pgmagick | Bindings para GraphicsMagick | Manipulação avançada e conversão de imagens |
| SimpleITK | Processamento de imagens médicas | Registro, segmentação e análise volumétrica |
Bibliotecas detalhadas com exemplos reais
OpenCV
O que é: biblioteca abrangente para visão computacional e processamento de imagens, otimizada para desempenho e uso em tempo real.
Por que usar: algoritmos prontos para detecção de objetos, reconhecimento facial, transformações geométricas, calibração de câmeras e tracking; integração direta com C++/Python para produção.
# Instalação
pip install opencv-python
import cv2
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
blur = cv2.GaussianBlur(img, (5,5), 0)
edges = cv2.Canny(blur, 50, 150)
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (255,0,0), 2)
cv2.imwrite('contours.jpg', img)
Contexto Herez: usado em projeto de inspeção visual para detectar defeitos em peças industriais; pipeline em produção disponível nos repositórios Herez.
Mahotas
O que é: biblioteca de processamento de imagens com implementações em C++ para desempenho, oferecendo filtros, morfologia e extração de features.
# Instalação
pip install mahotas
import mahotas as mh
import numpy as np
img = mh.imread('input.png', as_grey=True)
textures = mh.features.haralick(img).mean(axis=0)
print('Haralick features:', textures)
Contexto Herez: extração de descritores para classificação de texturas em imagens de satélite; versão otimizada em C++ integrada ao pipeline de análise.
scikit-image
O que é: coleção de algoritmos de processamento e análise de imagem em Python, com foco em clareza e integração com NumPy/SciPy.
# Instalação
pip install scikit-image
from skimage import io, filters, morphology
img = io.imread('input.jpg', as_gray=True)
denoised = filters.gaussian(img, sigma=1)
th = filters.threshold_otsu(denoised)
mask = denoised > th
clean = morphology.remove_small_objects(mask, min_size=500)
io.imsave('segmented.png', clean.astype('uint8')*255)
Contexto Herez: usado em projetos de análise de imagens biológicas para segmentar células; notebooks com experimentos estão nos repositórios Herez.
pgmagick
O que é: bindings Python para GraphicsMagick, permitindo manipulação avançada de imagens, conversão de formatos e operações de alta qualidade.
# Instalação (pode requerer dependências do sistema)
pip install pgmagick
from pgmagick import Image
img = Image('input.tif')
img.resize('800x600')
img.quality(85)
img.write('output.jpg')
Contexto Herez: pipeline de geração de thumbnails e otimização de imagens para portais de conteúdo; scripts de conversão em lote disponíveis nos repositórios Herez.
SimpleITK
O que é: toolkit focado em imagens médicas, com suporte a DICOM, registro, segmentação e análise volumétrica; projetado para pesquisa e aplicações clínicas.
# Instalação
pip install SimpleITK
import SimpleITK as sitk
fixed = sitk.ReadImage('fixed.nii')
moving = sitk.ReadImage('moving.nii')
initial_transform = sitk.CenteredTransformInitializer(fixed, moving, sitk.Euler3DTransform())
registration = sitk.ImageRegistrationMethod()
registration.SetMetricAsMeanSquares()
registration.SetOptimizerAsRegularStepGradientDescent(learningRate=1.0, minStep=1e-6, numberOfIterations=200)
registration.SetInitialTransform(initial_transform, inPlace=False)
final_transform = registration.Execute(fixed, moving)
resampled = sitk.Resample(moving, fixed, final_transform, sitk.sitkLinear, 0.0, moving.GetPixelID())
sitk.WriteImage(resampled, 'registered.nii')
Contexto Herez: aplicado em projeto de análise de imagens médicas para alinhar séries temporais; pipelines e exemplos clínicos estão documentados nos repositórios Herez.
Comparação prática e recomendações Herez
| Critério | OpenCV | scikit-image | Mahotas | pgmagick | SimpleITK |
|---|---|---|---|---|---|
| Foco | Visão computacional | Pesquisa e algoritmos | Desempenho C++ | Manipulação/GraphicsMagick | Imagens médicas |
| Desempenho | Alto | Médio | Alto | Médio | Alto (volumétrico) |
| Curva de aprendizado | Média | Baixa a média | Média | Média | Média |
| Ideal para | Tempo real e produção | Prototipagem científica | Operações intensivas em CPU | Conversão e qualidade | Pesquisa clínica e diagnóstico |
Boas práticas Herez
- Combine ferramentas: use OpenCV para etapas em tempo real e scikit-image/Mahotas para análise científica e extração de features.
- Ambientes isolados: crie ambientes virtuais (
venvouconda) e registre versões emrequirements.txtpara reprodutibilidade. - Documente dependências nativas: automatize instalação de bibliotecas do sistema para pgmagick e SimpleITK no CI.
- Valide com métricas: use IoU, Dice, PSNR e SSIM para avaliar qualidade antes de produção.
- Repositórios Herez: exemplos completos, notebooks e pipelines usados em projetos reais por Herez estão disponíveis nos repositórios GitHub e GitLab da Herez.
Próximo post da série
No próximo artigo cobriremos bibliotecas Python para Web Scraping, com exemplos práticos, estratégias de coleta ética e pipelines para transformar dados brutos em insights.

