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

Kar*_*lan 6 c++ opencv image image-processing

我有两个点(假设是从矩形,它的左上角和右下角).

Point pTopLeft;
Point pBottomRight;
Run Code Online (Sandbox Code Playgroud)

我想用这些点来表示一个cv :: Rect.所以,我试过了

cv::Rect rRect;
rRect.tl() = pTopLeft;
rRect.br() = pBottomRight;
Run Code Online (Sandbox Code Playgroud)

没有错误.但是Rect似乎什么都没有.即,两个点都表示为零.那么,如何用任意两点制定一个新的Rect对象呢?

ber*_*rak 11

因为Rect :: tl()和Rect :: br()只返回副本而不是引用,所以尝试构造函数:

cv::Rect rRect(pTopLeft, pBottomRight);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,右下角是独占的.如果你想要包含这个点,试试`cv :: Rect rRect(pTopLeft,pBottomRight + cv :: Point(1,1));` (2认同)

Gré*_*EUT 5

你必须从你的两点来计算基本信息.宽度和高度,然后使用以下构造函数创建新对象:


(Object) rect(x, y, width, height)
Run Code Online (Sandbox Code Playgroud)
pTopLeft.x = x

pTopLeft.y = y

pBottomRight.x - pTopLeft.x = width

pTopLeft.y - pBottomRight.y = height
Run Code Online (Sandbox Code Playgroud)


Har*_*ris 5

你也可以这样做,

Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);
Run Code Online (Sandbox Code Playgroud)