Como funciona
O projeto é dividido em quatro partes independentes. A parte pesada (a IA) roda uma vez por jogo; o resto é leve e fica no ar de graça.
IA
PC com GPU da equipe
Lê o vídeo, detecta e rastreia os jogadores, projeta na quadra, separa os times e calcula as estatísticas. Gera um results.json por jogo.
backend/aiAPI
Vercel (função Python)
FastAPI leve, sem modelos. Recebe o results.json com um token e serve os jogos para o site.
backend/apiBanco
Supabase (Postgres)
Guarda jogos, times, jogadores e arremessos. Qualquer pessoa lê; só a API escreve.
supabase/Site
Vercel (Next.js)
O que você está vendo: lista de jogos, estatísticas, mapas de calor e shotmap.
frontend
Homografia
O piso da quadra é um plano. Qualquer imagem de um plano se liga à vista de cima dele por uma matriz 3×3, a homografia. Com ela, o ponto onde o pé do jogador toca o chão vira uma posição em metros, e daí saem distância, velocidade e mapas de calor.
A equipe testou quatro formas de calcular essa matriz. A escolhida usa pontos, linhas e arcos da quadra e errou em média 5 a 7 cm em pontos de conferência. Tudo virou uma biblioteca aberta, independente do resto do projeto, que serve para qualquer esporte de quadra.
Ler a documentação da biblioteca court-homographyPrincipais decisões
- Calibração manual por vídeo
- A câmera é fixa e o detector de quadra do 5x5 não generalizou para o 3x3.
- Calibração com linhas e arcos, não só pontos
- Resolve os cantos da quadra cortados pelo ângulo da câmera.
- Quadra oficial FIBA 3x3 como referência
- Garante as medidas em metros reais.
- Times pela cor dos uniformes
- Os uniformes mudam de jogo para jogo; não precisa treinar modelo novo.
- Filtro espacial pela posição na quadra
- Exclui banco, torcida e aquecimento na outra metade.
- IA roda fora da nuvem
- Sem GPU gratuita na Vercel; processar local e publicar só o resultado mantém o custo em zero.