1

编辑:看起来像是物体从物体进入的框架的一侧。不知道为什么会这样,但从右边进入它总是被捡起,从顶部,它永远不会被捡起,直到它靠近右侧。

简而言之,我正在尝试使用 OpenCV 和 CamShift 跟踪对象。我已经计算并显示了我的反投影图像,它看起来很棒。它基本上是黑色背景上的白色斑点。但是,我的程序有时只会拾取它。CamShift 的搜索窗口包含整个图像,然后当它出现在屏幕上时缩小到对象,然后在对象离开时再次展开。这工作正常大约 2/3 次。我不明白第三次出了什么问题。

http://imgur.com/a/rVw2l:显示我的意思的屏幕截图专辑。绿色矩形是搜索窗口 (trackWindow),红色是 CamShift (trackBox) 的旋转矩形输出。

有任何想法吗?我尝试使用标准,但这似乎没有多大作用。

calcBackProject(&image_hue, 1, 0, hist, backproj, &ranges, 1, true );
erode(backproj, backproj, Mat());
dilate(backproj, backproj, Mat());

backproj=backproj*10;
imshow ("", backproj);

cout << "width " << trackWindow.width << "\n";
cout << "height " << trackWindow.height << "\n";    

RotatedRect trackBox = CamShift(backproj, trackWindow, TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ));

rectangle(image,trackWindow, Scalar(0,255,0),1,8,0);

Point2f vertices[4];
trackBox.points(vertices);
for (int i = 0; i < 4; i++)
{
line(image, vertices[i], vertices[(i+1)%4], Scalar(0,0,255));
}
4

0 回答 0