我正在使用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]“匹配 参数列表
由于
答案 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();