【发布时间】:2015-04-03 15:31:03
【问题描述】:
我目前正在使用 OpenCV 创建一个系统来检测车辆是否在某些区域。到目前为止,我已经达到了在每辆车周围绘制Rect 的程度。我的下一步是找到这些矩形的中心点,看看它是否属于特定区域。
我意识到这样做的最好方法可能是找到Rect的四个角的坐标,然后取平均x和平均y-坐标来找到中心点的坐标.但是,我不确定如何执行此操作。是否有一些功能可以让我直接访问 OpenCV 的 Rect 坐标?
【问题讨论】:
我目前正在使用 OpenCV 创建一个系统来检测车辆是否在某些区域。到目前为止,我已经达到了在每辆车周围绘制Rect 的程度。我的下一步是找到这些矩形的中心点,看看它是否属于特定区域。
我意识到这样做的最好方法可能是找到Rect的四个角的坐标,然后取平均x和平均y-坐标来找到中心点的坐标.但是,我不确定如何执行此操作。是否有一些功能可以让我直接访问 OpenCV 的 Rect 坐标?
【问题讨论】:
编辑为原文:正如所指出的,我们不能直接在 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的方法:
tl ()
br ()
分别获取左上角和右下角。]
如果您确实想使用 tl, br 方法,您可以这样做:
Point anotherCentroid = new Point(0.5 * (myrect.br().x + myrect.tl().x), 0.5 * (myrect.br().y + myrect.tl().y));
【讨论】:
+ 运算符不允许与tl 和br 一起使用...