如何找到移动物体的坐标来绘制矩形

Posted

技术标签:

【中文标题】如何找到移动物体的坐标来绘制矩形【英文标题】:How to find the coordinates of moving objects to draw rectangle 【发布时间】:2013-03-09 01:23:29 【问题描述】:

有谁知道如何定位移动物体的坐标?我在网上找到了一些关于使用光流跟踪物体的例子,但我只在移动物体上得到了一些跟踪点。我可以在每个移动对象周围画一个矩形吗?有没有办法获取每个移动物体的坐标?提前感谢任何帮助。谢谢!

【问题讨论】:

【参考方案1】:

将矩形拟合到通过光流获得的点,您可以将拟合矩形的中心视为对整个移动体的 2D 轨迹的公平估计。

【讨论】:

【参考方案2】:

你可以使用 Moments 运算符

首先计算轮廓尺寸.... 只需添加此代码块

Moments moment = moments((cv::Mat)contours[index]);
           area = moment.m00;//m00 gives the area
                       x = moment.m10/area;//gives the x coordinate
                    y = moment.m01/area;  //gives y coordiante

其中的轮廓是 findcontours() 的输出,

【讨论】:

【参考方案3】:

很难仅从对象上的几个点来判断对象的坐标。您可以使用时刻 (here is a tutorial) 获得一个非常稳定的点来描述您的对象在哪里。

您还可以做一些额外的工作,例如使用跟踪点进行分割以获取跟踪对象的轮廓,这应该会更容易找到它的质心。做得太过分了。 p>

还有一个称为CAMSHIFT 的跟踪方法,它返回一个包围被跟踪对象的矩形。

如果您准确地知道您在跟踪什么,并且可以确保跟踪对象上的一些已知点,并且您能够识别它们,那么您可以使用 POSIT 来确定对象的 3D 坐标和方向。看一眼ArUco,了解我在说什么。

要从以前的方法中获取 3D 位置,您可以使用立体视觉,并使用两个相机的质心来计算坐标。

【讨论】:

您好,感谢您的回复。我对分割和跟踪之间的关系感到困惑。我尝试使用背景减法来获得移动物体的轮廓,但我怎样才能跟踪它们呢?我还需要使用光流,但是如何使用? 我只是将分段作为免费建议提出。应该多挖一些,看看它是如何实际使用的。无论如何,你可以在它们周围画一个矩形,你可以使用质心,或者其他任何东西,只要你与它保持一致,那么每个对象的定位方式都是一样的。至于精确位置,您可能需要使用calcPyrOpticalFlowLK,因为它会跟踪场景中先前设置的特征,而不是仅显示任何移动的位置。

以上是关于如何找到移动物体的坐标来绘制矩形的主要内容,如果未能解决你的问题,请参考以下文章

使用Python绘制/绘制迷宫般的线条?

让物体在开罗移动

绘制大量半透明矩形,wpf和GDI哪个效率高?

在鼠标位置绘制矩形和形状渲染矩形

VB.Net 如何通过鼠标单击和拖动来旋转矩形

Tkinter:获取鼠标绘制矩形的坐标