有没有简单的方法可以将cv :: Rect的大小和坐标相乘?

时间:2019-04-08 08:58:56

标签: c++ opencv

假设我有2个矩形。我希望第二个矩形比第一个矩形大两倍,并且x,y的位置也要大一倍。

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

将矩形2参数1设置为1即可

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

它可以工作,但是有没有更简单的方法(例如单行代码)呢?

2 个答案:

答案 0 :(得分:0)

我们可以重载*运算符:

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;

答案 1 :(得分:0)

如果您想这样做,这可能是最短的方法:

HEAD