有人知道如何定位移动对象的坐标吗?我在网上找到了一些使用光流跟踪物体的例子,但我只在运动物体上得到了一些跟踪点。我可以在每个移动的物体周围画一个矩形吗?有没有办法得到每个移动物体的坐标?提前感谢任何帮助。谢谢!
将一个矩形拟合到光流得到的点上,您可以将拟合矩形的中心视为整个运动物体的二维轨迹的合理估计。
你可以使用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()的输出,
仅仅从物体上的几个点来判断物体的坐标是相当困难的。你可以使用力矩(这里有一个教程)来获得一个相当稳定的点来描述你的物体在哪里。
还有一个叫做CAMSHIFT
的跟踪方法,它返回被跟踪对象的矩形边界。
如果你确切地知道你在跟踪什么,并且可以确保跟踪对象上的一些已知点被跟踪,并且你能够识别它们,那么你可以使用POSIT来确定对象的3D坐标和方向。看一眼ArUco就知道我在说什么了。
要从之前的方法中获得3D位置,您可以使用立体视觉,并使用两个摄像机的质心来计算坐标。