2012-06-18 67 views
3

我有一個項目,我需要使用OpenCV來檢測網絡攝像頭上的一個對象(網球),並且爲了獎勵功能,當我在桌子上滾動時跟蹤它。簡單的OpenCV項目 - 檢測和跟蹤網球

因爲我使用的是OpenCV 2.4,C++,並且大量的信息位於較舊的OpenCV版本中,所以我沒有太多的運氣在這方面找到相關信息。我已經閱讀了很多不同的方法來做到這一點,但我只是不知道如何將其實現到我的代碼中。

任何幫助,將不勝感激,特別是對如何整合的檢測/跟蹤功能爲我的代碼

這裏是我的代碼,到目前爲止,我認爲圖像檢測/跟蹤代碼後,我應用過濾器應該:

//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

如果這是作業,請使用[作業]標籤。 – Chris

回答

9

您是否嘗試過谷歌您的問題?有很多關於這方面的信息。

簡單的想法是:使用color thresholding(看起來它是黃色或白色)和circle detection檢測您的對象。在檢測到球后,您需要使用(例如)Lucas-Kanade method來跟蹤它。

這裏有一些指南/手冊:

  1. Tracking colored objects OpenCV
  2. Motion Analysis and Object Tracking
  3. Learning OpenCV
  4. 看的OpenCV的文件夾samples。有很多非常有用的例子。在你的情況下,最好的例子是samples/cpp/lkdemo.cpp