将Rect转换为一个中心点

时间:2015-04-03 15:31:04

标签: java opencv

我目前正在使用OpenCV创建一个系统,用于检测车辆是否在某些区域。到目前为止,我已经到了每辆车周围画出Rect的地步。我的下一步是找到这些矩形的中心点,看看它是否属于特定区域。

我意识到这样做的最佳方式可能是找到Rect四个角的坐标,然后取平均x和平均y - 坐标来查找中心点的坐标。但是,我不知道该怎么做。是否有一些功能可以让我直接访问OpenCV的Rect坐标?

1 个答案:

答案 0 :(得分:1)

编辑为原文:正如所指出的,我们不能使用' +'运算符直接在tl()和br()。

使用它来获取矩形的中心:

Point p1 = new Point(100, 100);
Point p2 = new Point(600, 800);
Rect myrect = new Rect(p1, p2);
System.out.println(String.format("Rectangle: %s", myrect));

Point centroid = new Point(myrect.x + 0.5*(myrect.width), myrect.y + 0.5*(myrect.height));
System.out.println(String.format("centroid: %s", centroid));

打印:

Rectangle: {100, 100, 500x700}
centroid: {350.0, 450.0}

旧答案:

[使用rect&#39方法:

tl ()
br ()

分别获得左上角和右下角。]

如果您确实想使用tl,则可以执行以下方法:

Point anotherCentroid = new Point(0.5 * (myrect.br().x + myrect.tl().x), 0.5 * (myrect.br().y + myrect.tl().y));
相关问题