Bonjour,

J'utilise OpenCv 2.3 et ma question concerne le tracking de visages en temps réel.
J'ai implémenté un algo pour détecter un visage sur une vidéo ( via CascadeClassifier ) et ensuite créer un thread (QThread) qui s'occupe de traquer le visage sur les autres frames de la vidéo ( en utilisant Camshift ).
Ca fonctionne très bien.

Le souci c'est lorsque je souhaite désormais traquer un second visage qui apparaitrai à l'instant t dans la vidéo, alors qu'est encore présent le premier visage.
L'idée serait donc de détecter ce second visage et de créer un second thread pour le traquer. Cela nécessite de faire régulièrement appel à la fonction de détection de visages. Le problème, c'est que lors de la détection des nouveaux visages, rien ne me garantit que le visage détecté n'est pas le 1er, qui s'est déplacé depuis sa détection.
J'ai pourtant souvent vu de tels programmes tourner en temps réel, pour 2 visages simultanément.

Ma question porte donc sur les techniques qui pourraient être employées pour traquer 2 visages simultanément. Quels types d'algos me conseillerez-vous ? J'avais pour idée que chaque thread de tracking renseigne le thread principal sur la position courante du visage qu'il traque, mais cela implique de synchroniser tous les threads ensemble sur une même frame et ça me semble beaucoup trop lourd et très inélégant. Qu'en pensez-vous ?

Merci d'avance et bon après-midi.