您的位置:首页 > 运维架构

OpenCV实现目标跟踪的例子camshiftdemo

2017-04-24 19:21 393 查看
该例子 使用CAMSHIFT(Continuously Adaptive Mean Shift)算法跟新目标跟踪窗口,适合用于人脸的跟踪。实际使用时,用鼠标圈中要跟踪的目标,但相机的画面移动时,可以很好地实现对目标的跟踪,但当被跟踪的目标离开相机的画面时,会出现程序崩溃的现象,如下图:



经过一番追查,发现问题出在trackWindow上,但CamShift函数的每次调用是会判断和修改trackWindow的大小的,如果这个大小非正,就会引发CV_Assert断言,导致程序崩溃。该函数返回的trackBox用于绘制椭圆也是要求大小为正。

这种情况是目标跟丢了,具体解决办法可以在CamShift函数调用之后加上以下代码:

if (trackWindow.width <= 0 || trackWindow.height <= 0)

{
cout << "error tracking: object is lost.\n";
trackObject = 0;
histimg = Scalar::all(0);
continue;

}

使其结束跟踪,这时用户可以用鼠标重新圈中要跟踪的目标。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: