2

我使用网络摄像头并使用 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); } 

    }
4

1 回答 1

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); } 

}
于 2013-04-17T09:53:37.610 回答