Преобразуйте две точки в прямоугольник (cv :: 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);