【发布时间】:2015-09-28 14:23:21
【问题描述】:
下面的 sn-p 代码用于跟踪,但问题是我不知道为什么由于某些原因点(对象的质心点)在几帧并行消失 calcOpticalFlowPyrLK 也不适用于这些帧一切都消失了几帧。图像如下所示。任何人都可以请帮助持续跟踪这些对象。我也尝试过使用卡尔曼滤波器,但没有成功。
视频的第 10 帧
视频的第 25 帧
看这个图像点消失了,只是显示了一个输入图像
视频的第 45 帧
for(int i =0; i<theVehicles.size(); i++){
Point p=Point(theVehicles.at(i).getXPos(),theVehicles.at(i).getYPos());
points12.push_back(p);
TermCriteria termcrit(TermCriteria::COUNT|TermCriteria::EPS,20,0.03);
Size subPixWinSize(10,10), winSize(31,31);
//cout<<p;
calcOpticalFlowPyrLK(prevGray, filledEdgesOut, points12,points, status, err, winSize, 3, termcrit, 0, 0.001);
RNG rng(12345);
for( int i = 0; i < points.size(); i++ )
{
circle( frame, points[i], r, Scalar(rng.uniform(0,255), rng.uniform(0,255),rng.uniform(0,255)), -1, 8, 0 );
/*cv::circle(frame,points[i],10,cv::Scalar(0,0,255));
cv::putText(frame,intToString(theVehicles.at(i).getXPos())+ " , " + intToString(theVehicles.at(i).getYPos()),cv::Point(theVehicles.at(i).getXPos(),theVehicles.at(i).getYPos()+20),1,1,Scalar(0,255,0));
cv::putText(frame,theVehicles.at(i).getType(),cv::Point(theVehicles.at(i).getXPos(),theVehicles.at(i).getYPos()-30),1,2,theVehicles.at(i).getColour());*/
}
}
【问题讨论】:
-
@Miki 你能看看这个问题,我能解决吗??
标签: c++ opencv video computer-vision