2010-12-07 49 views
0

En utilisant le code que j'ai trouvé à How do I track motion using OpenCV in Python? et http://appdelegateinc.com/blog/2010/08/02/motion-tracking-with-a-webcam/; Je peux très bien suivre le mouvement avec Python et OpenCV. Je l'ai légèrement modifié donc au lieu de dessiner des cercles sur l'image, il imprimera les coordonnées (x, y) de ce qu'il détecte. Maintenant, cela fonctionne très bien pour montrer l'emplacement «exact» de la motion, mais je voudrais trouver la direction générale, par exemple, est-il en hausse ou en baisse.Obtention de la direction générale du mouvement en utilisant OpenCV et Python

J'ai une idée, à savoir une fois que j'ai quelques points, utilisez gnuplot pour tracer toutes les coordonnées y-coords VS, puis calculez une ligne de meilleur ajustement. Si le gradient est positif alors le mouvement est en hausse, et s'il est négatif, le mouvement est en baisse.

Bien que je sois assez certain que cela fonctionnerait, il semble plutôt "hacky". Je me demande s'il y a une meilleure façon de faire cela, étant donné que je suis assez nouveau pour OepnCV.

Répondre

0

Non, je ne pense pas qu'OpenCV offre cette fonctionnalité. Vous le faites déjà correctement en calculant le dégradé. Cependant, vous pourriez faire avec un calcul simple de (x1, y1) et (x2, y2) pour dire un gradient entre deux points. L'utilisation de gnuplot peut être lourde. Vous pouvez également utiliser Numdifftools. Ajouter des liens supplémentaires sur OpenCV que je n'ai pas trouvé dans la réponse précédente.