我有两个点(假定为矩形,它的左上角&右下角)。将两点转换为矩形(cv :: Rect)
Point pTopLeft;
Point pBottomRight;
我想制定一个cv :: Rect使用这些点。所以,我试过
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但Rect似乎没有包含任何内容。即,两个点都指示为零。那么,我如何用任意两点制定一个新的Rect对象?
我有两个点(假定为矩形,它的左上角&右下角)。将两点转换为矩形(cv :: Rect)
Point pTopLeft;
Point pBottomRight;
我想制定一个cv :: Rect使用这些点。所以,我试过
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但Rect似乎没有包含任何内容。即,两个点都指示为零。那么,我如何用任意两点制定一个新的Rect对象?
因为矩形:: TL ()和Rect :: br()只是返回拷贝,不是引用,试试构造函数:
cv::Rect rRect(pTopLeft, pBottomRight);
你必须从你的两点计算基本信息。宽度和高度,然后使用下面的构造函数创建新的对象:
(Object) rect(x, y, width, height)
pTopLeft.x = x
pTopLeft.y = y
pBottomRight.x - pTopLeft.x = width
pTopLeft.y - pBottomRight.y = height
你可以把它这种方式也
Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);
将值赋给返回函数一点也不好。但是我的好奇心使用两点来制定Rect对象,导致我忽略了这一点。 –
请注意,正确的底点是排他性的。如果你想包含点,请尝试'cv :: Rect rRect(pTopLeft,pBottomRight + cv :: Point(1,1));' –