O Open Source Computer Vision Library é uma biblioteca open source voltada para a visão computacional e o processamento de imagem, criada pela Intel em 1999. Apesar de ser mais usada em C++ e Java, também possui bastante popularidade em Python, principalmente pela facilidade de integração com projetos de inteligência artificial.
O funcionamento do OpenCV pode ser dividido em etapas principais: a entrada dos dados, que pode ser uma imagem ou um vídeo; o processamento dessa imagem ou vídeo, aplicando filtros, reconhecendo padrões e outros tipos de análise; e por fim a exibição ou salvamento do resultado, seja para mostrar na tela, salvar em um arquivo ou enviar para outro sistema.
Dentro da biblioteca, existem módulos essenciais como o Core/imgpro, o ML interno, o DNN, o G-API, o Features2D/CALIB3D e o OBJDETECT/TRACKING.
As aplicações do OpenCV são amplas e estão presentes em áreas como automação e robótica, medicina; na segurança e vigilância, AR/VR. O OpenCV possui como principais concorrentes o Pillow, o Scikit-image e o Dlib, que também oferecem ferramentas para manipulação e análise de imagens, mas com diferentes níveis de complexidade e especialização.
Uma das grandes vantagens do OpenCV é a sua ampla gama de recursos de visão computacional, permitindo reconhecer rostos, objetos, padrões e movimentos com alta precisão. Além disso, a biblioteca oferece funcionalidades para segmentação de imagens, facilitando a separação de elementos importantes dentro de uma cena, manipulação de imagens com filtros ou e suporte para aplicações em realidade aumentada, possibilitando a integração de elementos virtuais no mundo real de forma dinâmica e interativa.
O Tkinter é a biblioteca padrão do Python para criação de interfaces gráficas (GUIs). Foi criada nos anos 90 e até hoje conta com uma comunidade ativa. Seu visual é simples e um pouco limitado em termos de personalização e recursos, e sua organização pode ser menos flexível e não tão intuitiva para iniciantes quando comparada a outras bibliotecas gráficas modernas.
O Tkinter fornece uma variedade de widgets prontos, como Label (rótulos de texto), Button (botões), Entry (campos de entrada de texto), Text (áreas de texto mais amplas) e PhotoImage (exibição de imagens). Para organização dos elementos na janela, oferece gerenciadores de layout como pack e grid, permitindo posicionar e alinhar os componentes de forma relativamente simples.
O PyQt é uma biblioteca grande para criação de interfaces gráficas modernas e profissionais em Python, baseada no framework Qt. É compatível com múltiplas plataformas (Windows, Linux e macOS) e oferece uma grande quantidade de recursos, desde componentes visuais avançados até ferramentas para integração com banco de dados, gráficos e multimídia. Por ser uma biblioteca extensa e abrangente, também é mais complexa e pode ser difícil para iniciantes. Outro ponto importante é que, diferentemente do Tkinter, o PyQt não é totalmente open source para uso comercial, o que causa um custo adicional de licença.
O PyQt oferece layouts automáticos, que organizam os elementos da interface de forma responsiva, e utiliza o sistema de sinais e slots, permitindo que eventos (como cliques de botões) sejam conectados a funções específicas no código.
O Pygame é uma biblioteca em Python composta por diversos módulos que facilitam a criação de jogos e aplicações multimídia. Construída sobre a biblioteca SDL (Simple DirectMedia Layer), o Pygame oferece ferramentas para exibir imagens, desenhar formas geométricas, controlar temporizadores e reproduzir sons e músicas.
Criada em 2000 por Pete Shinners, a biblioteca é amplamente utilizada por desenvolvedores iniciantes que querem criar jogos 2D.
O funcionamento do Pygame se baseia no chamado game loop, que é um ciclo contínuo composto por três etapas principais: o processamento dos eventos (como entrada do teclado e mouse), a atualização da lógica do jogo (movimento dos personagens, regras, pontuação) e a renderização (desenho dos elementos na tela).
Entre suas funcionalidades, o Pygame oferece suporte para input via teclado (keydown), movimentos do mouse (mouse motion), controle do tempo com FPS configurável, e também controle de colisões e física básica para detectar interações entre objetos, como triângulos e retângulos.
Os módulos mais usados incluem: