我有两个点(假设是从矩形,它的左上角和右下角)。
Point pTopLeft;
Point pBottomRight;
我想使用这些点来制定一个cv :: Rect。所以,我试过
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但 Rect 似乎什么都没有。即,两个点都表示为零。那么,如何用任意两点制定一个新的Rect对象呢?
答案 0 :(得分:11)
因为Rect :: tl()和Rect :: br()只返回副本而不是引用,所以尝试构造函数:
cv::Rect rRect(pTopLeft, pBottomRight);
答案 1 :(得分:5)
你必须从你的两点来计算基本信息。宽度和高度,然后使用以下构造函数创建新对象:
(Object) rect(x, y, width, height)
pTopLeft.x = x
pTopLeft.y = y
pBottomRight.x - pTopLeft.x = width
pTopLeft.y - pBottomRight.y = height
答案 2 :(得分:4)
你也可以这样做,
Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);