变换矢量<vector <point>&gt; X进入IplImage *或cv :: Mat * </vector <point>

时间:2012-04-05 10:37:50

标签: c++ opencv vector

我有vector<vector<Point> > X但我需要将其传递给输入cvConvexityDefects的函数CvArr*

我已经阅读了主题Convexity defects C++ OpenCv。它接受输入这些变量:

vector<Point>& contour, vector<int>& hull, vector<Point>& convexDefects

我无法使解决方案正常工作,因为我有一个vector<Point>的hull参数,而且我不知道如何在vector<int>中对其进行转换。

所以现在有两个问题! :)

如何将vector<vector<Point> >转换为vector<int>

提前致谢,祝你有个美好的一天!:)

1 个答案:

答案 0 :(得分:0)

使用std::for_each和累积对象:

class AccumulatePoints
{
public:
    AccumulatePoints(std::vector<int>& accumulated)
    : m_accumulated(accumulated)
    {
    }

    void operator()(const std::vector<Point>& points)
    {
        std::for_each(points.begin(), points.end(), *this);
    }

    void operator()(const Point& point)
    {
        m_accumulated.push_back(point.x);
        m_accumulated.push_back(point.y);
    }
private:
    std::vector<int>& m_accumulated;
};

像这样使用:

int main()
{
    std::vector<int> accumulated;
    std::vector<std::vector<Point>> hull;

    std::for_each(hull.begin(), hull.end(), AccumulatePoints(accumulated));

    return 0;
}