将Rect转换为vector <point>

时间:2016-12-21 07:53:17

标签: c++ opencv

我正在使用OpenCV,需要将cv::Rect转换为std::vector<cv::Point>中所有点的Rect

我想知道是否有一种方法可以做到这一点? 如果没有,我如何用我的积分填充std::vector

我尝试在构造函数中添加点,但它失败了:

cv::Rect rect
std::vector<cv::Point> _contour(rect.tl(),rect.br());

我得到的错误是

  

没有构造函数的实例“std :: vector&lt; _Ty,_Alloc&gt; :: vector [with   _Ty = cv :: Point,_Alloc = std :: allocator]“匹配参数列表

我尝试使用insert函数添加点数,但这也失败了:

cv::Rect rect
std::vector<cv::Point> _contour;
_contour.insert(rect.tl());

我得到的错误是:

  

没有重载函数的实例“std :: vector&lt; _Ty,_Alloc&gt; :: insert   [with _Ty = cv :: Point,_Alloc = std :: allocator]“匹配   参数列表

由于

1 个答案:

答案 0 :(得分:1)

由于rect.tl()的返回类型是一个点,您可以使用初始化列表来构造向量:

std::vector<cv::Point> _contour { rect.tl(), rect.br() };

正如BoBTFish所提到的,你应该使用push_back而不是insert:

std::vector<cv::Point> _contour;
_contour.push_back(rect.tl());

另一种方式:您知道矢量的大小并更改值:

std::vector<cv::Point> _contour(2);
_contour[0] = rect.tl();
_contour[1] = rect.br();