C++ 将两个点转换为矩形 (cv::Rect)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22710264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Convert two points to a rectangle (cv::Rect)
提问by Karthik_elan
I have two points (assumed to be from rectangle, which are its top-left corner & bottom-right corner).
我有两点(假设来自矩形,即它的左上角和右下角)。
Point pTopLeft;
Point pBottomRight;
I want to formulate a cv::Rect using these points. So, I tried
我想用这些点来制定一个 cv::Rect 。所以,我试过了
cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
There is no error. But the Rectseems to be containing nothing. i.e., both the points are indicating zero. So, How do I formulate a new Rect object with arbitrary two points ?
没有错误。但是Rect似乎什么都不包含。即,两个点都指示为零。那么,如何用任意两点来制定一个新的 Rect 对象?
回答by berak
since Rect::tl() and Rect::br() just return copies, not references, try a constructor:
由于 Rect::tl() 和 Rect::br() 只返回副本,而不是引用,请尝试构造函数:
cv::Rect rRect(pTopLeft, pBottomRight);
回答by Grégory NEUT
You have to calcul basic informations from your two points. Width and height, and then create new object using the following constructor :
你必须从你的两点来计算基本信息。宽度和高度,然后使用以下构造函数创建新对象:
(Object) rect(x, y, width, height)
pTopLeft.x = x
pTopLeft.y = y
pBottomRight.x - pTopLeft.x = width
pTopLeft.y - pBottomRight.y = height
回答by Haris
You can make it this way also,
你也可以这样做,
Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);