我有两个点(假设它们来自一个矩形,分别是它的左上角和右下角)。
Point pTopLeft;
Point pBottomRight;
我想使用这些点来创建一个cv::Rect
。因此,我尝试了以下代码:
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但是Rect
似乎包含了什么都没有的情况,即两个点都指向零。那么,我该如何使用任意两个点创建一个新的Rect
对象?
我有两个点(假设它们来自一个矩形,分别是它的左上角和右下角)。
Point pTopLeft;
Point pBottomRight;
我想使用这些点来创建一个cv::Rect
。因此,我尝试了以下代码:
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
没有错误。但是Rect
似乎包含了什么都没有的情况,即两个点都指向零。那么,我该如何使用任意两个点创建一个新的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);
cv::Rect rRect(pTopLeft, pBottomRight+cv::Point(1,1));
。 - Hyunjun Kim