Есть ли простой способ умножить размер и координаты cv :: Rect? - PullRequest
0 голосов
/ 08 апреля 2019

Допустим, у меня есть 2 прямоугольника.Я хочу, чтобы второй прямоугольник был в два раза больше первого прямоугольника, а позиция x, y также в два раза больше.

cv::Rect r1=Rect(10,20,40,60);
cv::Rect r2 = r1 * 2;  //this won't work

Установка параметра 1 на 1 для прямоугольника 2 будет работать

r2.height = r1.height * 2;
r2.width = r1.height * 2;
r2.x = r1.x * 2;
r2.y = r2.y * 2;

Это работает, но есть ли более простой способ сделать это (например, однострочный код)?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Если вы хотите сделать это, это может быть кратчайший путь:

cv::Rect r1=Rect(10,20,40,60);
cv::Rect r2(r1.tl() * 2, r1.br() * 2);
0 голосов
/ 08 апреля 2019

Мы можем перегрузить оператор *:

cv::Rect operator*(cv::Rect r, double scale) {
    r.height *= scale;
    r.width *= scale;
    r.x *= scale;
    r.y *= scale;
    return r;
}

И затем вы можете напрямую умножить прямоугольники:

Rect r2 = Rect(10, 20, 40, 60) * 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...