La vision web
ObjectifAfficher la webcam et dessiner les points de la main en temps réel.
- Crée index.html avec une balise video, un canvas superposé et un bouton « Démarrer » (les navigateurs exigent un clic pour l'audio, et c'est plus propre pour la caméra).
- Demande la caméra avec getUserMedia({ video: { width: 640, height: 480 } }) — 640×480 suffit et reste très rapide.
- Charge MediaPipe Tasks Vision via le CDN, module ES, version fixée, et le modèle hand_landmarker.task.
- Crée le HandLandmarker avec runningMode: "VIDEO", numHands: 2, seuils de confiance à 0.5 environ.
- Dans une boucle requestAnimationFrame, appelle detectForVideo(video, performance.now()) et dessine les 21 points et leurs connexions.
- Affiche les FPS à l'écran. Objectif : 30 FPS ou plus.
- Serve la page via un petit serveur local (python -m http.server ou Live Server) : caméra et modules ES sont bloqués sur file://.
- Le délégué GPU (delegate: "GPU") accélère la détection, avec repli automatique sur CPU.
- N'appelle detectForVideo que si video.currentTime a changé : pas de calcul deux fois sur la même image.
Prompt de départ
Crée un fichier HTML unique qui ouvre la webcam (640x480), utilise MediaPipe Tasks Vision (HandLandmarker, 2 mains, mode VIDEO, chargé depuis jsDelivr avec une version fixée) et dessine les 21 landmarks et leurs connexions sur un canvas superposé, en miroir. Affiche les FPS et indique pour chaque main si elle est gauche ou droite. Un bouton Démarrer lance tout.
Ouvrir la démo live de cette phase →
Critère de réussite — tu vois ton squelette de main suivre tes mouvements avec moins de 100 ms de retard perçu et plus de 25 FPS.