Comment puis-je détecter et suivre des personnes utilisant OpenCV?

j'ai une caméra qui sera stationnaire, dirigée vers une zone intérieure. Les gens passeront devant la caméra, à moins de 5 mètres. En utilisant OpenCV , je veux détecter les individus qui passent - mon retour idéal est un tableau d'individus détectés, avec des rectangles limites.

j'ai regardé plusieurs des échantillons intégrés:

  • aucun des échantillons Python s'appliquent vraiment
  • Le C blob de suivi de l'échantillon semble prometteur, mais n'accepte pas la vidéo en direct, ce qui rend les tests difficiles. C'est aussi le plus compliqué des échantillons, ce qui rend problématique l'extraction des connaissances pertinentes et leur conversion à L'API Python.
  • l'échantillon C 'modempl' semble également prometteur, en ce qu'il calcule une silhouette à partir de cadres vidéo ultérieurs. Sans doute pourrais-je alors l'utiliser pour trouver des composants fortement connectés et extraire les blobs individuels et leurs boîtes de limites - mais je suis encore à essayer de trouver un moyen d'identifier les blobs trouvés dans les cadres suivants comme la même blob.

est - ce que quelqu'un est en mesure de fournir des conseils ou des échantillons pour ce faire-de préférence dans Python ?

34
demandé sur Jav_Rock 2010-02-03 02:50:00

4 réponses

la dernière version SVN D'OpenCV contient une implémentation (non documentée) de la détection des piétons basée sur HOG. Il est même livré avec un détecteur pré-formé et une enveloppe en python. L'usage de base est le suivant:

from cv import *

storage = CreateMemStorage(0)
img = LoadImage(file)  # or read from camera

found = list(HOGDetectMultiScale(img, storage, win_stride=(8,8),
                padding=(32,32), scale=1.05, group_threshold=2))

donc au lieu de suivre, vous pourriez simplement exécuter le détecteur dans chaque image et utiliser sa sortie directement.

voir src/cvaux/cvhog.cpp pour l'implémentation et samples/python/peopledetect.py pour un exemple plus complet de python (à la fois dans le Sources OpenCV).

27
répondu Martin 2010-02-20 00:16:52

Nick,

ce que vous recherchez n'est pas la détection des personnes, mais la détection des mouvements. Si vous nous en dites beaucoup plus sur ce que vous essayez de résoudre/faire, nous pouvons mieux répondre. Quoi qu'il en soit, il y a plusieurs façons de faire la détection de mouvements selon ce que vous allez faire avec les résultats. Le plus simple serait de faire une différence suivie d'un battage, tandis qu'un complexe pourrait être une bonne modélisation de fond - > soustraction au premier plan - > ops morphologique - > connecté analyse en composantes, suivie d'une analyse blob si nécessaire. Téléchargez le code opencv et regardez dans le répertoire samples. Vous pouvez voir ce que vous cherchez. Il y a aussi un livre D'Oreilly sur OCV.

Espérons que cette aide, Nand

5
répondu Nand 2010-02-28 18:12:11

il s'agit clairement d'une tâche non négligeable. Vous aurez à regarder dans les publications scientifiques pour l'inspiration ( Google Scholar est votre ami ici). Voici un article sur la détection et le suivi humain: suivi humain par le mode de déplacement moyen rapide cherchant

4
répondu geschema 2010-02-14 11:19:18

c'est similaire à un projet que nous avons fait dans le cadre d'un cours de Vision informatique, et je peux vous dire dès maintenant que c'est un problème difficile à régler.

vous pouvez utiliser la segmentation premier plan/arrière-plan, trouver tous les blobs et ensuite décider qu'ils sont une personne. Le problème est que cela ne fonctionnera pas très bien puisque les gens ont tendance à aller ensemble, passer l'un de l'autre et ainsi de suite, une tache pourrait très bien se composer de deux personnes et alors vous verrez que la tache se fendre et la fusion comme ils marchent.

Vous aurez besoin d'une méthode de discrimination entre plusieurs personnes dans un blob. Ce n'est pas un problème, je m'attends à ce que quelqu'un soit en mesure de répondre dans un seul SO-post.

mon conseil est de plonger dans les recherches disponibles et voir si vous pouvez trouver quelque chose là-bas. Le problème n'est pas insoluble étant donné qu'il existe des produits qui le font: Autoliv a un produit pour détecter les piétons à l'aide d'une caméra IR sur une voiture, et je ont vu d'autres produits qui traitent de compter les clients entrant et sortant des magasins.

1
répondu Hannes Ovrén 2010-02-03 09:13:15