camShift和cvCamShift之间的区别是什么?

时间:2016-10-26 10:05:22

标签: c++ opencv image-processing

opencv c ++接口的camShift功能没有输出参数CvConnectedComp * comp和CvBox2D * box = NULL。如果我使用c ++接口camShift,我可以做些什么来获取这些信息?有人可以告诉我该怎么办?感谢。

C++: RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria);

C: int cvCamShift(const CvArr* prob_image, CvRect window, CvTermCriteria criteria, CvConnectedComp* comp, CvBox2D* box=NULL );

1 个答案:

答案 0 :(得分:0)

我认为您无法检索连接的组件信息;但是,它已经将您需要的信息返回给RotatedRect。根据OpenCV documentation

该函数实现了CAMSHIFT对象跟踪算法[Bradski98]。首先,它使用meanShift()找到一个对象中心,然后调整窗口大小并找到最佳旋转。该函数返回包含对象位置,大小和方向的旋转矩形结构。可以使用RotatedRect :: boundingRect()获取搜索窗口的下一个位置。

RotatedRect对象具有以下结构:

class RotatedRect
{
public:
    // constructors
    RotatedRect();
    RotatedRect(const Point2f& _center, const Size2f& _size, float _angle);
    RotatedRect(const CvBox2D& box);
    // returns minimal up-right rectangle that contains the rotated rectangle
    Rect boundingRect() const;
    // backward conversion to CvBox2D
    operator CvBox2D() const;
    // mass center of the rectangle
    Point2f center;
    // size
    Size2f size;
    // rotation angle in degrees
    float angle;
};