将两个点转换为矩形(cv::Rect)



我有两个点(假设来自矩形)和它的左上角&右下角)。

Point pTopLeft;
Point pBottomRight;

我想用这些点来表示一个cv::Rect。因此,我尝试了

cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;

没有错误。但Rect似乎不含任何物质。也就是说,两个点都指向0。那么,如何用任意两点来表示一个新的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);

相关内容

  • 没有找到相关文章

最新更新