简单的OpenCV项目 - 检测和跟踪网球

keh*_*hin 3 opencv object-detection video-tracking

我有一个项目,我需要使用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;
}
Run Code Online (Sandbox Code Playgroud)

Art*_*huk 9

你试着谷歌提问吗?有很多信息.

接下来是简单的想法:使用颜色阈值(似乎是黄色或白色)和圆形检测来检测您的对象.在检测到球之后,您需要使用(例如)Lucas-Kanade方法跟踪它.

以下是一些指南/手册:

  1. 跟踪彩色对象OpenCV
  2. 运动分析和目标跟踪
  3. 学习OpenCV
  4. 看看OpenCV的文件夹samples.有很多非常有用的例子.在你的情况下,最好的例子是samples/cpp/lkdemo.cpp.