跟踪对象时如何绘制运动?

时间:2013-04-17 06:33:48

标签: c++ physics

我使用网络摄像头并使用openCV检索每个帧并跟踪对象的位置。

所以基本上,每帧都有一个点。但是如何实时绘制运动图像呢?

我是否需要一个计时器在一定时间内记录几个点并画线?

就像在while循环中一样,我只检索一帧,我不认为如果我在当前帧上画一条线,我仍然可以在下一帧中保持这条线。那我该如何展示这个动作呢?

while( true )
    {
        //Read the video stream
        capture = cvCaptureFromCAM(1);
        frame = cvQueryFrame( capture );

        //Apply the classifier to the frame
        detectAndDisplay(frame); // I got a point from this function

        // waitkey enter
        int c = waitKey(10);
        if( (char)c == 27 ) { exit(0); } 

    }

1 个答案:

答案 0 :(得分:1)

使用矢量来保持位置,然后在每一帧上绘制它们。 请注意,您的函数需要返回检测到的点。我已经更改了它的名字,因为它不会在那时绘制。你可以稍后解决。

vector<CvPoint> trajectory;
Vec3b mycolor(100,0,0);

while( true )
{
    //Read the video stream
    capture = cvCaptureFromCAM(1);
    frame = cvQueryFrame( capture );

    //Apply the classifier to the frame
    CvPoint cur_pnt=detect(frame); // I got a point from this function
    trajectory.push_back(cur_point);

    //Draw points.
    for (int i=0;i<trajectory.size();i++)
        frame.at<Vec3b>(trajectory[i].x,trajectory[i].y)=mycolor;

    // waitkey enter
    int c = waitKey(10);
    if( (char)c == 27 ) { exit(0); } 

}