运动跟踪(三):CamShift(),对象跟踪

本文深入探讨OpenCV2中的CamShift算法,该算法用于精确的对象跟踪。通过内部调用cvCamShift和cvMeanShift,实现高效的目标运动追踪。
摘要由CSDN通过智能技术生成


opencv2中的函数CamShift,内部调用的是cvCamShift,cvCamShift的内部又使用了cvMeanShift。

cv::RotatedRect cv::CamShift( InputArray _probImage, Rect& window,
                              TermCriteria criteria )
{
    CvConnectedComp comp;
    CvBox2D box;

    box.center.x = box.center.y = 0; box.angle = 0; box.size.width = box.size.height = 0;
    comp.rect.x = comp.rect.y = comp.rect.width = comp.rect.height = 0;

    Mat probImage = _probImage.getMat();
    CvMat c_probImage = probImage;
    cvCamShift(&c_probImage, window, (CvTermCriteria)criteria, &comp, &box);
    window = comp.rect;
    return RotatedRect(Point2f(box.center), Size2f(box.size), box.angle);
}
int cvCamShift( const CvArr* prob_image, CvRect window, CvTermCriteria criteria,
                CvConnectedComp* comp, CvBox2D* box=NULL );
prob_image
目标直方图的反向投影 (见 cvCalcBackProject).
window
初始搜索窗口
criteria
确定窗口搜索停止的准则
comp
生成的结构,包含收敛的搜索窗口坐标 (comp->rect 字段) 与窗口内部所有象素点的和 (comp->area 字段).
box
目标的带边界盒子。如果非 NULL, 则包含目标的尺寸和方向。
函数 cvCamShift 实现了 CAMSHIFT 目标跟踪算法([Bradski98]). 首先它调用函数 cvMeanShift 寻找目标中心,然后计算目标尺寸和方向。最后返回函数 cvMeanShift 中的迭代次数。
(1)CamShift示例代码
// CamShiftDemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#include "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值