2012-06-18 3 views
3

J'ai un projet dans lequel je dois utiliser OpenCV pour détecter un objet (balle de tennis) sur une webcam, et pour un bonus de crédit, le suivre quand je le roule sur la table.Projet OpenCV simple - détection et suivi d'une balle de tennis

Je n'ai pas eu beaucoup de chance de trouver des informations à ce sujet, puisque j'utilise OpenCV 2.4, C++, et beaucoup d'informations sont dans la version plus ancienne d'OpenCV. J'ai lu beaucoup de différentes façons de le faire, mais je ne sais pas comment l'implémenter dans mon code.

Toute aide serait appréciée, en particulier sur la façon d'intégrer une fonction de détection/suivi dans mon code

Voici mon code jusqu'à présent, je pense que le code de détection d'image/suivi devrait aller après avoir appliquer les filtres:

//Includes & Namespaces 
#include "cv.h" 
#include "highgui.h" 
#include <iostream> 
using namespace cv; 
using namespace std; 


//Main Function 
int main(int, char**) 
{ 
    VideoCapture vid(0); //Capture from Webcam 
    if(!vid.isOpened()) //Error Check for Webcam 
    { 
     cout << "Could not open camera" << endl; 
     return -1; 
    } 

    Mat pic; //Create Matrix to store image 
    namedWindow("video",1); //Open Window 

    for(;;) //Infinite loop 
    { 
     Mat frame; //Create Matrix for a single frame 
     vid >> frame; //Transfer from webcam to matrix 

     //Filters 
     cvtColor(frame, pic, CV_BGR2HSV); 
     GaussianBlur(pic, pic, Size(7,7), 1.5, 1.5); 

     /*Image Detection Here */   

     imshow("Picture", pic); //Show image 

     if(waitKey(30) >= 0) 
     break; 
    } 
    return 0; 
} 
+0

S'il s'agit de devoirs, veuillez utiliser la balise [devoirs]. – Chris

Répondre

9

Avez-vous essayé de poser votre question? Il y a beaucoup d'informations à ce sujet.

Une idée simple est la suivante: détecter votre objet en utilisant color thresholding (il semble que ce soit de couleur jaune ou blanche) et circle detection. Une fois la balle détéctée, il suffit de la suivre en utilisant (par exemple) Lucas-Kanade method.

Voici quelques guides/manuels:

  1. Tracking colored objects OpenCV
  2. Motion Analysis and Object Tracking
  3. Learning OpenCV
  4. Regardez le dossier de OpenCV samples. Il y a beaucoup d'exemples très utiles. Dans votre situation, le meilleur exemple est samples/cpp/lkdemo.cpp.