我想知道如何使用kinect深度值来计算对象的实际大小。
例如,如果kinect在它前面看到一个圆形物体,而圆形物体在图像中占据100个像素的空间,而kinect给出的深度值是x,我怎么知道它的实际大小圆形物体?
我不需要像米或任何东西这样的单位,我只是想找到一个公式来计算物体的大小,该物体的大小与物体与kinect的距离无关。
我正在使用OpenCV和kinect SDK,如果有什么用处,请告诉我。
提前致谢。
答案 0 :(得分:2)
要在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