• Bibliotecas Python para Processamento de imagem — Parte 3 da série de posts do Guia Herez

    Processamento de Imagens em Python — Guia Herez (Parte 3)

    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 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
    OpenCVVisão computacional e processamento em tempo realDetecção, tracking, transformações e pipelines de CV
    MahotasOperações de imagem rápidas em C++Filtragem, morfologia e extração de features
    scikit-imageAlgoritmos de processamento e análise de imagemSegmentação, filtros e transformadas científicas
    pgmagickBindings para GraphicsMagickManipulação avançada e conversão de imagens
    SimpleITKProcessamento de imagens médicasRegistro, 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
    
    Exemplo prático (detecção de bordas e contornos)
    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
    
    Exemplo prático (extração de features Haralick)
    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
    
    Exemplo prático (segmentação por Otsu e remoção de ruído)
    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
    
    Exemplo prático (redimensionamento e otimização para web)
    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
    
    Exemplo prático (registro rígido entre duas imagens médicas)
    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
    FocoVisão computacionalPesquisa e algoritmosDesempenho C++Manipulação/GraphicsMagickImagens médicas
    DesempenhoAltoMédioAltoMédioAlto (volumétrico)
    Curva de aprendizadoMédiaBaixa a médiaMédiaMédiaMédia
    Ideal paraTempo real e produçãoPrototipagem científicaOperações intensivas em CPUConversão e qualidadePesquisa 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 (venv ou conda) e registre versões em requirements.txt para 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.
    Dica Herez: comece prototipando com scikit-image e OpenCV; quando a performance for crítica, migre partes para Mahotas ou implementações C++ e mantenha testes automatizados para garantir qualidade.

    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.

  • Bibliotecas Python para Testes Automatizados — Parte 2 da série de posts do Guia Herez

    Testes Automatizados em Python — Guia Herez (Parte 2)

    Testes Automatizados em Python — Parte 2 da série Herez

    Visão geral: esta é a segunda publicação da série Herez sobre bibliotecas Python. Aqui abordamos ferramentas para testes automatizados: Splinter, Robot Framework, Behave, PyUnit (unittest) e PyTest. O objetivo é oferecer descrições práticas, comandos de instalação e cenários de uso para escolher a ferramenta certa para seu projeto.

    Publicado por em

    Como usar este post

    Cada seção descreve a biblioteca, por que usá‑la, comando de instalação e exemplos de casos de uso. Use este guia para comparar ferramentas e montar um fluxo de testes automatizados adequado ao seu time e produto.


    Resumo rápido

    Biblioteca Tipo Quando usar
    SplinterAutomação de navegador (wrapper)Testes de UI simples; alternativa a Selenium
    Robot FrameworkFramework de automação baseado em palavras-chaveTestes de aceitação, RPA e automação de alto nível
    BehaveBDD (Behavior Driven Development)Especificações executáveis em Gherkin
    PyUnit / unittestFramework de testes padrãoTestes unitários com estilo xUnit
    PyTestFramework de testes modernoTestes unitários, integração e parametrizados; extensível

    Bibliotecas detalhadas

    Splinter

    O que é: biblioteca que simplifica a automação de navegadores, oferecendo uma API de alto nível que pode usar drivers como Selenium, zope.testbrowser ou outros backends.

    Por que usar: ideal para escrever testes de interface web com menos boilerplate que o Selenium puro; facilita ações comuns (clicar, preencher formulários, navegar) em testes de aceitação.

    # Instalação
    pip install splinter
    

    Casos de uso: testes de fluxo de usuário em aplicações web, validação de formulários, smoke tests de UI e automação de tarefas simples no navegador.

    Robot Framework

    O que é: framework de automação baseado em palavras‑chave, orientado a testes de aceitação e automação de processos (RPA). Fornece sintaxe legível por humanos e integrações com bibliotecas externas.

    Por que usar: excelente para equipes que preferem escrever casos de teste em formato tabular/keyword-driven; facilita colaboração entre desenvolvedores, QA e stakeholders não técnicos.

    # Instalação
    pip install robotframework
    

    Casos de uso: testes de aceitação, automação de processos repetitivos, integração com Selenium para testes de UI e cenários de RPA.

    Behave

    O que é: framework para BDD (Behavior Driven Development) que usa a linguagem Gherkin para descrever comportamentos em cenários legíveis (Given/When/Then).

    Por que usar: quando você quer alinhar requisitos e testes com stakeholders, transformando especificações em cenários executáveis que servem como documentação viva.

    # Instalação
    pip install behave
    

    Casos de uso: especificação e validação de requisitos, testes de aceitação automatizados e colaboração entre times de produto e QA.

    PyUnit / unittest

    O que é: implementação em Python do estilo xUnit, incluída na biblioteca padrão como unittest (historicamente conhecida como PyUnit).

    Por que usar: disponível por padrão, com estrutura familiar (TestCase, setUp, tearDown) e compatibilidade com muitas ferramentas e runners.

    # Uso básico (não requer instalação)
    python -m unittest discover
    

    Casos de uso: testes unitários clássicos, integração com CI e projetos que preferem dependências mínimas e API xUnit tradicional.

    PyTest

    O que é: framework de testes moderno e amplamente adotado, conhecido por sintaxe simples, fixtures poderosas e ecossistema de plugins.

    Por que usar: reduz boilerplate, suporta parametrização, fixtures reutilizáveis e integrações com ferramentas de cobertura e mocks; é frequentemente recomendado como primeira escolha para novos projetos Python.

    # Instalação
    pip install pytest
    

    Casos de uso: testes unitários, testes de integração, testes parametrizados, TDD e pipelines de CI. PyTest é frequentemente escolhido por sua simplicidade e extensibilidade.


    Comparação rápida

    Critério Splinter Robot Framework Behave unittest (PyUnit) PyTest
    FocoAutomação de navegadorKeyword-driven / RPABDDUnitário (xUnit)Unitário/Integração
    Curva de aprendizadoBaixaMédiaMédiaBaixaBaixa
    Ideal paraQA de UITimes multidisciplinaresAlinhamento com produtoProjetos padrãoProjetos modernos e TDD
    ExtensibilidadeMédiaAltaMédiaMédiaAlta (plugins)

    Boas práticas para testes automatizados

    • Separe testes por camadas: unitários, integração e aceitação.
    • Use ambientes isolados e dados de teste controlados; evite dependências externas nos testes unitários.
    • Automatize execução em CI e gere relatórios de cobertura e falhas.
    • Prefira PyTest para novos projetos, mantendo compatibilidade com unittest quando necessário.
    • Use Robot ou Behave quando stakeholders não técnicos precisarem ler ou escrever cenários de teste.
    Dica Herez: comece com PyTest para criar uma base sólida; adicione Robot ou Behave apenas quando houver necessidade clara de testes de aceitação legíveis por não desenvolvedores.

    Próximo post da série

    No próximo artigo cobriremos bibliotecas Python para Processamento de Imagens (Pillow, OpenCV, scikit-image), com exemplos práticos de pipelines de pré‑processamento e análise.

    Excerpt: Parte 2 da série Herez — guia prático de bibliotecas Python para testes automatizados: Splinter, Robot Framework, Behave, PyUnit e PyTest.

    Tags: Testes; Python; PyTest; Robot Framework

  • Bibliotecas Python para Aprendizado de Máquina — Parte 1 da série de posts do Guia Herez

    Bibliotecas Python para Aprendizado de Máquina — Guia Herez

    Bibliotecas Python para Aprendizado de Máquina — Parte 1 da série de posts do Guia Herez

    Visão geral: existem muitas bibliotecas Python úteis para diferentes etapas do fluxo de trabalho de Machine Learning. Por isso esta publicação faz parte de uma série que agrupa bibliotecas por área: Aprendizado de Máquina, Desenvolvimento Web, Testes Automatizados, Processamento de Imagens, Web Scraping e Desenvolvimento de Jogos. Este é o primeiro post da série e foca nas bibliotecas essenciais para aprendizado de máquina.

    Publicado por em

    Como usar este post

    Este artigo apresenta cada biblioteca com uma breve descrição, motivos para usar, comandos de instalação e exemplos de casos de uso. Use-o como referência rápida ao montar ambientes, escolher ferramentas para prototipagem ou planejar pipelines de ML.


    Resumo rápido

    Biblioteca Função principal Quando usar
    NumPyArrays N‑dimensionais e operações numéricasBase para cálculos e outras bibliotecas
    PandasManipulação de dados tabularesETL, análise exploratória, feature engineering
    MatplotlibPlotagem 2DGráficos personalizados e publicação
    SeabornVisualização estatística de alto nívelExploração de dados e relatórios
    SciPyRotinas científicas avançadasOtimização, integração, álgebra avançada
    scikit-learnAlgoritmos clássicos de MLModelos de baseline e pipelines
    TensorFlowFramework de deep learning escalávelProdução, treinamento em larga escala
    KerasAPI de alto nível para redes neuraisPrototipagem rápida de modelos
    PyTorchFramework de deep learning com execução dinâmicaPesquisa e modelos customizados
    TheanoCompilador de expressões matemáticas (histórico)Legado e compreensão histórica

    Bibliotecas detalhadas

    NumPy

    O que é: biblioteca fundamental para computação numérica em Python. Fornece o tipo ndarray e operações vetorizadas de alto desempenho.

    Por que usar: base para Pandas, SciPy e muitos frameworks de ML; substitui loops Python por operações vetorizadas, acelerando cálculos.

    # Instalação
    pip install numpy
    

    Casos de uso: álgebra linear, manipulação de tensores simples, geração de dados sintéticos e operações matriciais em pipelines de pré‑processamento.

    Pandas

    O que é: biblioteca para manipulação e análise de dados tabulares com estruturas DataFrame e Series.

    # Instalação
    pip install pandas
    

    Casos de uso: ETL, análise exploratória (EDA), tratamento de valores ausentes, criação de features e integração com scikit‑learn.

    Matplotlib

    O que é: biblioteca clássica de plotagem 2D; altamente configurável e a base para muitas outras bibliotecas de visualização.

    # Instalação
    pip install matplotlib
    

    Seaborn

    O que é: camada de alto nível sobre Matplotlib para visualizações estatísticas com estética pronta.

    # Instalação
    pip install seaborn
    

    SciPy

    O que é: conjunto de algoritmos científicos construído sobre NumPy, incluindo otimização, integração, interpolação, álgebra linear avançada e estatística.

    # Instalação
    pip install scipy
    

    scikit-learn

    O que é: biblioteca padrão para algoritmos clássicos de machine learning: regressão, classificação, clustering, redução de dimensionalidade e pipelines.

    # Instalação
    pip install scikit-learn
    

    TensorFlow

    O que é: framework de deep learning escalável, com suporte a CPU, GPU e TPU, e um ecossistema para produção.

    # Instalação
    pip install tensorflow
    

    Keras

    O que é: API de alto nível para construção e treino de redes neurais; atualmente integrada ao TensorFlow como tf.keras.

    # Instalação (opcional se usar tf.keras)
    pip install keras
    

    PyTorch

    O que é: framework de deep learning com execução dinâmica (eager execution), muito usado em pesquisa e com forte comunidade.

    # Instalação
    pip install torch torchvision
    

    Theano

    O que é: biblioteca histórica para definição e otimização de expressões matemáticas que geram código eficiente para CPU/GPU.

    # Instalação
    pip install Theano
    

    Como escolher a combinação certa

    • Preparação de dados: NumPy + Pandas + SciPy.
    • Visualização: Matplotlib para controle fino; Seaborn para análises estatísticas rápidas.
    • Modelos clássicos: scikit‑learn para protótipos e pipelines.
    • Deep learning: TensorFlow/Keras para produção; PyTorch para pesquisa e experimentação.

    Boas práticas

    • Use ambientes virtuais (venv, conda) para isolar dependências.
    • Documente versões das bibliotecas (arquivo requirements.txt ou environment.yml) para reprodutibilidade.
    • Ao usar GPU, verifique compatibilidade entre versões de CUDA/cuDNN e as bibliotecas (TensorFlow/PyTorch).
    • Combine bibliotecas: Pandas para ETL, scikit‑learn para baseline, e TensorFlow/PyTorch para modelos complexos.
    Dica Herez: comece com um pipeline simples (Pandas → scikit‑learn) para validar hipóteses antes de migrar para deep learning.

    Próximo post da série

    No próximo artigo cobriremos bibliotecas Python para Testes Automatizados (Splinter, Robot, Behave, PyUnit e PyTest), com comparações práticas e cenários de uso. .

    Excerpt: Primeiro post da série Herez sobre bibliotecas Python para aprendizado de máquina — guia prático para NumPy, Pandas, Matplotlib, Seaborn, SciPy, scikit‑learn, TensorFlow, Keras, PyTorch e Theano.

    Tags: Python; aprendizado de máquina; NumPy; Pandas; TensorFlow

Biografia do autor: Doutor Herez possui Bacharelado em Análise de Sistemas, Mestrado em Engenharia de Computação/Software, Doutorado em Ciência da Computação e seu primeiro diploma acadêmico em Processamento de Dados em 1996. Início profissional na carreira em T.I. em 1993 com o primeiro certificado de programação de computadores em 1986 e início da participação em curso de programação em 1985. Microsoft Certified Professional desde 2000, entre outros títulos oficiais de diversos grandes fabricantes internacionais de software, também criou cursos e provas oficiais voltados à programação de computadores. Tem experiência na área de Ciência da Computação, com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: análise e desenvolvimento de sistemas, engenharia de software, métodos de pesquisa e métodos ágeis.