Convert two points to a rectangle (cv::Rect)

26,714

Solution 1

Since Rect::tl() and Rect::br() just return copies, not references, try a constructor:

cv::Rect rRect(pTopLeft, pBottomRight);

Solution 2

You have to calculate basic information from your two points: width and height. Then, create a 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

Solution 3

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);
Share:
26,714
Karthik_elan
Author by

Karthik_elan

Updated on July 16, 2022

Comments

  • Karthik_elan
    Karthik_elan almost 2 years

    I have two points (assumed to be from a rectangle and 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 rRect;
    rRect.tl() = pTopLeft;
    rRect.br() = pBottomRight;
    

    There is no error. But the Rect seems 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?