Преобразовать две точки в прямоугольник (cv :: Rect)

У меня есть две точки (предполагается, что из прямоугольника, которые являются его верхним левым углом & правый нижний угол).

Point pTopLeft;
Point pBottomRight;

Я хочу сформулировать cv :: Rect, используя эти точки. Итак, я попробовал

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

Там нет ошибки. Но Rect кажется, ничего не содержит. то есть обе точки указывают ноль. Итак, как мне сформулировать новый объект Rect с произвольными двумя точками?

6

Решение

поскольку Rect :: tl () и Rect :: br () просто возвращают копии, а не ссылки, попробуйте конструктор:

cv::Rect rRect(pTopLeft, pBottomRight);
11

Другие решения

Вы должны рассчитать основную информацию из ваших двух точек. Ширина и высота, а затем создайте новый объект, используя следующий конструктор:


(Object) rect(x, y, width, height)

pTopLeft.x = x

pTopLeft.y = y

pBottomRight.x - pTopLeft.x = width

pTopLeft.y - pBottomRight.y = height
5

Вы можете сделать это так же,

Point pTopLeft;
Point pBottomRight;
cv::Rect rRect(pTopLeft.x,pTopLeft.y,pBottomRight.x-pTopLeft.x,pBottomRight.y-pTopLeft.y);
3
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector