我想知道如何通过Kinect的深度值来确定物体的实际尺寸。
例如,如果Kinect在其前面看到一个圆形物体,并且该圆形物体在图像中占据了100个像素,并且Kinect给出的深度值为x,那么我将如何知道圆形物体的实际大小?
我不需要以米或其他任何单位表示,我只是想找到一种独立于物体距离Kinect的公式来计算物体的大小。
我正在使用OpenCV和Kinect SDK,如果有用的信息,请告诉我。
提前致谢。
要在3D中找到尺寸,给定2D中的尺寸,只需执行以下操作:
3d_rad = 2d_rad * depth
如果屏幕上的球看起来宽度为10像素,距离为1米,那么实际上它的宽度是10个“单位”。尝试一下来找出返回的单位,我不确定它们会是什么。
假设在屏幕上有一个半径为20像素的球,并且深度返回值为30,则球的实际大小为20*30 = 600个单位。同样,我不确定具体的单位,这取决于相机,但它是一个常数,可以进行尝试。将一个1米的球放在相机前面,远到足以看起来像100个像素。该距离的倒数应该是将你所拥有的单位转换为厘米的转换因子,并可用作常数。例如:
3d_rad_in_cm = conversion * 2d_rad * depth