天天看点

从kinect获取世界坐标

我们可用从Kinect的官方文件知道,Kinect的视锥是这个样子的。图中A,B和小人的脚是处于同一平面的,那么kincet获取到的

世界坐标中A,B的y轴坐标是相等的?还是如在RGB图中看到的一样,A,B,一上一下,y轴坐标不相等呢?

因此我抓获了Kinect的RGB,depth图像,对其后并转换成世界坐标,通过鼠标的点击来查看A,B的坐标。

最后结论如我所期待的一样:A,B在同一平面,A,B点y轴坐标相等。

这对小车室内定位和运作有重大意义。

从kinect获取世界坐标

获取到的RGB图像

从kinect获取世界坐标

获取到的depth图像

坐标排列(x, y, z)

从kinect获取世界坐标

opencv 2.3后有了获取世界坐标方法,大大减少了工作量

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/user_guide/ug_highgui.html

capture.retrieve(depthMap,CV_CAP_OPENNI_POINT_CLOUD_MAP);//XYZ in meters (CV_32FC3),以米为单位的XYZ点云 (CV_32FC3)
           

获取世界坐标数据

cout<<"mouse location:"<<"("<<cvGet2D(Image,y,x).val[0]<<","                \
			    <<cvGet2D(Image,y,x).val[1]<<","               \
			    <<cvGet2D(Image,y,x).val[2]<<")"<<endl;