Opencv调整rect大小同时保持质心

时间:2016-01-18 23:50:09

标签: java opencv

我有一个问题,我有一个来自轮廓检测的矩形,但是我想重新调整矩形的大小,同时保持质心,我注意到当我调整它时,它获得一个新的质心,这是因为我想要它是在我的对象的中心而不是当重新调整大小时,它移动到这里的大小是调整大小之前的图像,我的质心用红色和蓝色标记标记

调整大小之前:

调整大小后:

2

以下是我如何调整大小:

private static Rect rotateRect(Rect rect, int heightPercentage, int widthPercetange)
{

    int originalX = 0;
    int originalY = 0;
    originalX = rect.x;
    originalY = rect.y;
    rect.height = resizeObject(rect.height, heightPercentage);
    rect.width = resizeObject(rect.width, widthPercetange);
    rect.x = originalX;
    rect.y = originalY;

    return rect;
}




private static int resizeObject(int resize, int percentage)
{

    return  (int)(resize *(percentage/100.0f));

}

1 个答案:

答案 0 :(得分:1)

您只需将xy坐标添加到widthheight 移除的一半。

private static Rect rotateRect(Rect rect, int heightPercentage, int widthPercetange)
{
    int rwidth  = rect.width;
    int rheight = rect.height;

    rect.width = Math.round((rect.width * widthPercetange) / 100.0f);
    rect.height = Math.round((rect.height * heightPercentage) / 100.0f);        
    rect.x += (rwidth - rect.width) / 2;
    rect.y += (rheight - rect.height) / 2;

    return rect;
}