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