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

问题描述:

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

很难仅从一些点上知道对象的坐标。你可以使用时刻(here is a tutorial)tu得到一个相当稳定的点,描述你的对象在哪里。

您也可以做一些额外的工作,如使用跟踪点进行分割以获取跟踪对象的轮廓,这可以使其更容易找到其质心。与ths堕落。

还有一种叫做CAMSHIFT的跟踪方法,它返回一个限定跟踪对象的矩形。

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

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

+0

嗨,谢谢你的回复。我对分割和跟踪之间的关系感到困惑。我试图使用背景减法来获得移动物体的轮廓,但我怎样才能跟踪它们?我仍然需要使用光流,但是如何? – user746123 2013-03-10 01:51:01

+0

我只是把分割作为一个免费的建议。应该多挖一点,看看它是如何使用的。无论如何,你可以在它们周围绘制一个矩形,只要你与它一致,就可以使用质心或其他任何东西,因此每个对象的位置都是相同的。至于确切的位置,您可能想使用['calcPyrOpticalFlowLK'](http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=pyrlk#calcopticalflowpyrlk),因为它跟踪之前设置的功能现场,而不是只显示任何动作在哪里。 – morynicz 2013-03-10 09:30:53

适合一个矩形的点,你与光流得到,你可以考虑拟合矩形作为整个移动体的2D轨迹的合理估计的中心..

u可以使用的瞬间操作

第一计算轮廓尺寸.... ,只是添加此代码块

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()的输出,