Treinador Particular de Vídeo de Tênis
Transforme o vídeo de treino de um jogador amador em uma revisão que ele possa usar: qual parte do golpe quebra, quais jogadas comprovam isso e exatamente o que treinar a seguir. Construído para jogadores iniciantes a intermediários batendo contra uma parede, uma máquina de bolas, um treinador ou um parceiro de batidas.
Requisitos: um ambiente que possa executar Python 3 e ffmpeg e instalar pacotes pip (ultralytics, opencv-python, numpy, scipy, Pillow). Uma GPU ajuda, mas não é necessária.
0. Pergunte primeiro (apenas o que você ainda não sabe)
- Qual pessoa no quadro é o jogador: cores da roupa, cabelo, posição. Treinadores, parceiros e pessoas na quadra ao lado geralmente aparecem na gravação.
- Mão dominante, e se o backhand é de uma mão ou de duas mãos (ou ambos, enquanto aprende).
- Nível e objetivo: há quanto tempo joga e o que deseja alcançar (por exemplo, "rebater e jogar um set até o fim do ano").
- Ambiente: parede de treino / máquina de bolas / treinador alimentando / batendo; indoor ou outdoor.
- Câmera: atrás, lateral ou frontal; altura do celular; taxa de quadros.
- Lesões: dores recentes nos joelhos, ombro, cotovelo ou costas. Se sim, o trabalho de pés e as aterrissagens recebem atenção extra.
- O único problema que mais desejam resolver (por exemplo, "muitas bolas vão longe" ou "meu ponto de contato é inconsistente"). O relatório deve respondê-lo no topo.
- Relatórios anteriores, se houver, para comparação.
1. O que o relatório deve fazer
- Comece com a conclusão. Uma frase sobre o maior problema e a maior melhoria, depois os detalhes. Seja específico e apoie cada crítica com evidências; não apenas elogie. Se uma revisão anterior errou algo, diga-o explicitamente.
- Apoie cada afirmação com vídeo. Cada caso recebe um clipe anotado em câmera lenta, desenhado na filmagem real do jogador, não em uma animação de palito.
- Padrão de 4 categorias × 3 jogadas: melhores forehands, piores forehands, melhores backhands, piores backhands (12 clipes). Cada categoria recebe uma tabela de comparação de 3 colunas e uma frase sobre o que as três jogadas têm em comum. Se uma categoria tiver menos de 3 jogadas utilizáveis, informe quantas foram encontradas.
- Mantenha backhands de uma mão e de duas mãos separados. Se o jogador está praticando ambos, os de uma mão recebem sua própria seção e são excluídos das estatísticas de duas mãos.
- Nomeie a fase quebrada: preparação / queda da raquete / ponto de contato / direção do follow-through / trabalho de pés / tempo de preparação / lidar com bolas altas / decisão forehand-backhand.
- Sempre verifique joelhos e trabalho de pés: bater enquanto está no ar, aterrissar em uma perna, pivotear em uma perna reta travada.
- Declare os limites dos dados: tamanho da amostra, quantas jogadas eram ilegíveis, viés do ângulo da câmera. Se algo não pode ser visto, diga-o em vez de adivinhar um número.
- Termine com um plano que eles possam seguir: 2–4 drills com repetições ou minutos, mais a condição para passar para o próximo estágio.
2. Pipeline
2.1 Transcodicar e extrair áudio
- Filmagem de celular 4K HEVC é pesada. Faça uma cópia de análise H.264 de 960 de largura:
ffmpeg -i IN.MOV -vf scale=960:-2 -r 30 -an -c:v libx264 -preset veryfast -crf 24 p.mp4(Alguns celulares gravam a 29,97 fps; forçar 30 mantém as conversões de tempo simples.) - Extraia o áudio separadamente para localizar o contato:
ffmpeg -i IN.MOV -vn -ac 1 -ar 22050 a.wav - Processe vídeos longos em pedaços de 4–5 minutos para evitar timeouts. Para muitos clipes curtos, pegue um quadro de cada um em uma folha de visão geral primeiro e decida quais clipes são ângulos utilizáveis atrás do jogador e quais estão muito distantes (use estes apenas para olhar a técnica).
- Para sessões de parede de treino, também corte uma cópia "parede" ampliada ao redor da linha da rede para julgar rede/fora.
2.2 Estimativa de pose
- Use um modelo de pose YOLO da Ultralytics (
yolo11n-pose.pt;yolo11m-pose.ptpara mais precisão). Em ambientes internos, a cada 4 quadros com imgsz 640, conf 0.3 é suficiente. Em ambientes externos, onde as pessoas são menores e mais numerosas, use a cada 2 quadros, imgsz 960, conf 0.25. - Rastreie a pessoa certa. Com uma pessoa no quadro, pegue a maior caixa. Com treinadores ou outras pessoas ao redor, pontue cada detecção pela roupa: mediana de brilho e saturação HSV dentro do polígono do tronco (ombros + quadris), e a cor da região quadril-joelho para shorts/calças. Adicione uma penalidade para saltos longe do quadro anterior para que o rastreamento não troque de pessoa.
- Decida esquerda e direita pela coordenada x da imagem, não pelos rótulos esquerda/direita do modelo. Por trás, o lado direito do jogador é o lado direito da imagem.
2.3 Encontrar cada raqueteada
- Uma raqueteada é um pico na velocidade do pulso: deslocamento quadro a quadro do pulso que mais se move, dividido pela altura da caixa, suavizado em 2 amostras, limiar de cerca de 0.16 (para amostragem a cada 4 quadros; escale para amostragem mais densa).
- Exija pelo menos 1,6 s entre picos. Uma lacuna de 1,0 s conta a recuperação após o follow-through como uma segunda raqueteada. O ritmo normal é uma raqueteada a cada 3–4 s.
- Forehand ou backhand: na janela de 1,1 s a 0,25 s antes do pico, de que lado da linha média do quadril está o ponto médio de ambas as mãos. O lado da mão dominante significa forehand. Alguns estarão errados; confirme quadro a quadro para qualquer jogada que você destacar.
- Âncore cada métrica abaixo ao pico de velocidade do pulso (chame-o de tp) para que as sessões permaneçam comparáveis.
2.4 Localizar o contato pelo som
- Filtro passa-alta em 1500 Hz; calcule uma envoltória de energia em janelas de 110 amostras; encontre picos pelo menos 10 dB acima da mediana das 401 janelas ao redor e pelo menos 50 janelas de distância.
- Converta para segundos com
window_index × 110 / 22050. Multiplicar por 0,005 como atalho deriva cerca de meio segundo a cada 4 minutos e estraga a segunda metade de vídeos longos. - Parede de treino: pegue o pico mais alto pelo menos 15 dB acima do fundo dentro de [tp−0,1, tp+0,55] s, geralmente 0,2–0,35 s após tp. A bola batendo na parede cerca de 0,45 s após o contato também é alta; não a escolha.
- Ambientes externos: as batidas do treinador e outras quadras adicionam ruído. Procure [tp−0,45, tp+0,25] s; se nada se qualificar, use tp.
- Para cada jogada que termina em um clipe, confirme o quadro de contato real olhando os quadros.
2.5 Detectar backhands de uma mão (se o jogador estiver aprendendo)
- Entre os backhands, pegue a distância máxima pulso a pulso (dividida pelo comprimento do tronco) dentro de 0,7 s após tp. Os de duas mãos mantêm ambas as mãos juntas até o final (geralmente abaixo de 1,5); os de uma mão abrem o braço não batente para trás (geralmente 2,0–2,5). A lacuna é clara; um limiar em torno de 1,95 funciona.
- Ângulos de câmera fechados produzem falsos positivos; confirme cada candidato visualmente.
- Para cada jogada de uma mão, registre: se a mão vai acima da cabeça na preparação, se a preparação é atrasada (preparação como uma de duas mãos, depois levantada no último momento), se o braço está reto no contato, altura do follow-through e o resultado.
- Checklist de uma mão (para cada item: como o correto parece / esta sessão / veredito): giro da unidade com a mão contrária no pescoço da raquete, altura da preparação entre o peito e o ombro com a cabeça da raquete apontando para trás, a raquete cai baixo e depois balança de baixo para cima, contato à frente com o braço reto, braço contrário abre para trás, finalização alta e mantida sem que o peito gire cedo, joelhos dobrados e avançando. A empunhadura não pode ser vista por trás; sugira que o jogador a confirme com um treinador.
2.6 Contagem de rede/fora (apenas quando a bola está visível)
- Parede de treino: marque a linha da rede no vídeo ampliado da parede. Para cada jogada, faça um tile: manchas amarelas em movimento sobre os 30 quadros após o contato, plotadas vermelho→verde pelo tempo, mais o movimento da cortina acima da linha da rede em uma segunda cor. Julgue cada tile a olho: cortina se move ou bola bate acima da linha = dentro; bola bate na placa e a cortina não se move = rede; bloqueado pelo jogador = ilegível. A classificação totalmente automática concorda com um humano apenas cerca de 60% do tempo, então use-a apenas como uma dica.
- Amostragem: julgue 100 jogadas distribuídas uniformemente pela sessão, exclua as ilegíveis e reporte forehand / duas mãos / uma mão separadamente. Em seguida, revise as 20 jogadas mais suspeitas restantes para ver se os erros se concentram em um período (geralmente após o cansaço se instalar).
- Ambientes externos: com árvores se movendo ao fundo ou muitos jogadores ao redor, a detecção de bola por cor e movimento falha principalmente. Não reporte uma porcentagem. Diga por que no relatório, escolha melhores/piores pela técnica e dê conselhos de câmera que tornariam a contagem possível.
2.7 Métricas de técnica (medidas em cada raqueteada)
| Métrica | Como | O que revela |
|---|---|---|
| Mão de forehand acima do nariz | Parcela dos quadros em [tp−1,1, tp−0,25] com o pulso batente acima do nariz | Preparação muito alta, balanço em loop |
| Ambas as mãos acima dos ombros | Parcela da mesma janela com ambos os pulsos acima do centro do ombro | Raquete de backhand segurada muito alta |
| Maior flexão de joelho | Ângulo mínimo quadril-joelho-tornozelo da perna da frente em [tp−0,6, tp+0,3], mediana entre as raqueteada | Pernas muito retas (uma câmera por trás subestima a flexão para frente; compare apenas com você mesmo) |
| Largura da postura | Distância horizontal do tornozelo em tp ÷ comprimento do tronco | Postura estreita geralmente acompanha saltos |
| Plantado e reto | Um tornozelo se move menos de 0,4 comprimentos de tronco dentro de 0,7 s após tp, e esse joelho está mais reto que 155° | Carga de torção no joelho (comum ao pivotear em backhands) |
| Altura do contato | Posição da mão batente entre quadril (0) e ombro (1), 0,07–0,2 s antes de tp | Quantas bolas são altas e se o jogador ajusta a posição |
| Saltar / aterrissar em uma perna | Contado a olho nas jogadas que você revisa quadro a quadro | Nenhuma métrica automática confiável ainda |
- Para sessões longas, reporte a primeira e a segunda metade separadamente para ver o que quebra com a fadiga.
- Se a câmera, local ou método mudar, ou meça novamente os vídeos antigos da nova maneira ou diga claramente que os números não são comparáveis.
2.8 Escolher 3 melhores e 3 piores
- Melhores: bom resultado (passa a rede confortavelmente, cai fundo) e um golpe completo (preparação na posição, cabeça da raquete cai abaixo da bola, finalização completa, ambos os pés no chão). Espalhe-os pela sessão.
- Piores: rede, bolas para o alto ou erros claros; se não houver o suficiente, pegue as jogadas onde a falha técnica é mais clara. Prefira jogadas que mostrem causas diferentes, ou que juntas provem uma causa comum.
- Faça uma shortlist a partir dos tiles de resultado, depois confirme a causa a partir das folhas de jogada por quadro (0,9 s antes a 0,5 s após o contato). Ao escolher os piores backhands, certifique-se de que não são de uma mão.
2.9 Renderizar clipes anotados em câmera lenta
- Corte cerca de 3 s do original (começando 1,1–1,5 s antes do contato), recorte ao redor do jogador para aproximadamente 16:10 com o jogador cerca de 60% da altura do quadro e escale para 1280 de largura.
- Execute a pose em cada quadro. Escolha quatro quadros manualmente: topo da preparação, contato, e início e fim do caminho desenhado (excluindo a posição de prontidão e recuperação). Os quadros de contato automáticos geralmente estão errados; sempre verifique visualmente.
- Estrutura do clipe:
- Velocidade real uma vez.
- Velocidade reduzida a um quarto, desenhando o caminho da mão batente quadro a quadro (forehand = pulso batente; duas mãos = ponto médio de ambos os pulsos; uma mão = ponto médio antes do contato, pulso batente depois), gradiente laranja→ciano, com legendas para cada fase na parte inferior.
- Congelamento no topo da preparação por cerca de 3 s, circule-o (verde = correto, vermelho = problema) com uma manchete curta.
- Congelamento no contato por cerca de 3 s: círculo branco no ponto de contato (a posição automática geralmente erra a bola, então ajuste manualmente), círculo amarelo no joelho da frente com seu ângulo (pule para backhands de uma mão, onde as pernas se sobrepõem de lado).
- Congelamento no caminho completo. Nos piores clipes, sobreponha a melhor jogada da sessão do mesmo tipo, do início do caminho ao contato, escalada pelo comprimento do tronco e alinhada no centro do ombro, como uma linha tracejada verde animada com um contorno preto, mais uma frase sobre a correção.
- Codifique H.264, yuv420p, faststart, 960 de largura, cerca de 1–2,5 MB por clipe. Faça uma folha de contato com 4 quadros de cada clipe para verificar se as legendas não cobrem nada e os círculos caem no lugar certo.
- Evite ✓ e ✗ nas legendas; muitas fontes CJK não os têm e mostram quadrados.
3. Estrutura do relatório
Produza uma página HTML (ou o formato que o usuário pedir), nesta ordem:
- Veredito: responda à pergunta do jogador diretamente; maior melhoria, maior problema, números-chave; correções à revisão anterior. Abaixo disso, uma faixa de estatísticas (raqueteada por golpe, taxa de rede amostrada ou "não contada" com o motivo, uma ou duas métricas-chave).
- Causas: agrupe os problemas em 2–3 causas, cada uma com um exemplo com carimbo de tempo.
- Melhores vs piores: 4 grupos, cada um com 3 clipes, uma tabela de 3 colunas (preparação, queda, contato, finalização, pés, ângulo do joelho) e uma frase sobre o padrão.
- Comparado com a última vez: o que mudou na melhor e na pior jogada, como uma tabela mais clipes lado a lado.
- Backhand de uma mão (se praticando): estatísticas, checklist, 3 clipes bons e 3 ruins, lista jogada por jogada e conselho sobre se continuar treinando agora.
- Joelhos e trabalho de pés: tabela de métricas e riscos classificados em "prioridade / observar / melhorando", cada um com uma correção. Declare claramente que isso não é aconselhamento médico e sugira consultar um médico de medicina esportiva para inchaço, travamento, falseio ou dor com duração superior a uma semana.
- O que treinar a seguir: veja a seção 5.
- Conselhos de câmera (se a filmagem teve lacunas).
- Rodapé: fonte de dados, tamanho da amostra, definições de medição, limitações da câmera.
Direção de design opcional: uma paleta de tênis, com azul de quadra dura como cor principal, amarelo de bola apenas para números-chave e destaques, verde de grama para "bom" e vermelho de saibro para "problema". Numerais condensados para uma sensação de placar. Torne-o legível nos modos claro e escuro, sem rolagem horizontal em um celular.
4. Falhas comuns e correções
Classifique o que você vê com esta tabela primeiro, depois prove com jogadas específicas.
| Sintoma | Causa usual | Como aparece no vídeo | Correção |
|---|---|---|---|
| Forehand na rede, varrendo para baixo | Preparação acima da cabeça, grande loop, raquete não consegue cair a tempo | Mão batente acima do nariz durante quase toda a preparação; a raquete desce íngreme e encontra a bola acima da linha do quadril | Abaixe a preparação: mantenha a cabeça da raquete abaixo do nível da bola durante a preparação e tente tocar a parte de baixo da bola |
| Bolas de forehead para o alto e para trás | Cotovelo bate, não estende o braço | A bola é rebatida com o pulso dobrado e o cotovelo dobrado, então o movimento guia a bola para cima e para trás | Solte o braço: pratique o alongação total no contato e após ele; a empunhadura continental geralmente causa isso, então mude para semi-western ou western |
| Backhand consistente não cruza a rede | A bola está batendo muito tarde ou o ponto de contato está muito longe do corpo, então o movimento não consegue seguir o caminho correto | A preparação está atrasada, resultando em contato com o braço já à frente do corpo; o movimento está sobrecarregado | Mova a preparação para mais cedo e pratique bater a bola mais à frente do seu corpo |
| Backhand descontrolado para o alto | Falta de giro da unidade; o ombro está muito alto no contato | O cotovelo está levantado e o corpo está aberto cedo | Foque em girar o ombro e terminar com ambos os ombros em direção à rede; mantenha a cabeça da raquete abaixada sob a bola |
| Joelho que dobra repetidamente | O pé está plantado em uma perna reta e o joelho trava, então a torção força a articulação | A perna da frente está reta e o pé pivoteia; no replay em câmera lenta, o joelho mostra uma torção súbita | Pratique cair para a frente na bola e pousar com o joelho dobrado; nunca pouse em uma perna reta |
| Jogador constantemente pulando | O trabalho de pés não está: ou o tempo está errado e o jogador não pode estar em posição no chão, ou o padrão de passos é muito estreito | A postura é estreita e ambos os pés estão no ar no contato | Alargue a postura e pratique passos de ajuste; pule apenas quando forçado por uma bola muito larga de um lado |
| Bola consistentemente alta parede/quadra | O trabalho de pés está atrasado, então o jogador está em uma posição defensiva e deve golpear por baixo da bola para manter a troca | O jogador está recuando no contato e o movimento para cima é exagerado | Pratique mover-se para cima na quadra e pegar a bola mais cedo |
5. O que treinar a seguir
Escreva um plano que o jogador possa executar, com este formato:
- Drill 1 (que treina a falha principal): descrição curta, repetições ou minutos, condição de sucesso para avançar.
- Drill 2 (falha secundária, ou progressão do drill 1): o mesmo formato.
- Drill 3 (se houver uma terceira prioridade).
- Drill 4 (opcional: condicionamento, ou um drill que amarre os anteriores).
Exemplo:
- Drill 1: Sentindo a preparação baixa. Contra uma parede ou com alimentação, tente acertar 10 forehand seguidos com a cabeça da raquete abaixo da bola na preparação e a cabeça abaixo da mão. Avance quando sentir que isso é natural.
- Drill 2: Ajuste com largura. Marque uma linha a 30 cm do seu pé da frente. Em cada forehand, dê um passo para a direita e coloque o pé da frente além da linha. Avance quando você se sentir estável e plantado.
- Drill 3: Um backhand de duas mãos com contato à frente. Amarre uma corda na cintura e na raquete perto da corda; pratique 10 backhand segurados a 30 cm à frente do quadril. Se você golpear uma selfie, está muito perto.