我想知道如何使用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