我正在研究cinder和kinect v2应用程序,目前我仍然坚持将色点映射到深度点。我通过颜色框搜索某个特定颜色的点,所以我有颜色框架点x和y。
我想从中获得深度,但当然深度帧是不同的分辨率和视点,所以你不能只是索引它。
我找不到任何颜色指向深度点或甚至相机点的映射器。除了自己进行测量之外,还有一种简单的方法吗?
我的问题与此类似:How to get real world coordinates (x, y, z) from a distinct object using a Kinect,但我不需要实际的真实世界坐标。但是,那里的答案并没有完全解释我做了什么。
答案 0 :(得分:2)
您必须使用CoordinateMapperClass。对于你的情况:
使用功能
public void MapColorFrameToDepthSpace (
Array<UInt16>[] depthFrameData,
out Array<DepthSpacePoint>[] depthSpacePoints
)
答案 1 :(得分:1)
您必须使用kinect传感器的CoordinateMapper。您的映射与MapColorFrameToDepthFrame或空格有关。此功能可用于kinect v2 sdk。
完成此步骤后,您将获得3个信息(Xview,Yview,Zworld) Yworld和Xworld你可以找到这些公式
Yworld = Zworld * Yview / focal_length
Xworld = Zworld * Xview / focal_length
现在您知道任何图像点的世界坐标
您可以轻松测量两点之间的距离。
Distance_of_p1_p2(mm) = Sqrt ( Square(p2.Xworld - p1.Xworld) + Square(p2.Yworld - p1.Yworld) + Square(p2.Zworld - p1.Zworld))