JAVA world转图片,将Kinect深度图像转换为真实世界坐标
我正在使用kinect,使用OpenNI 2.x,c,OpenCV .
我能夠獲得kinect深度流并獲得灰度cv :: Mat . 只是為了說(shuō)明它是如何定義的:
cv::Mat m_depthImage;
m_depthImage= cvCreateImage(cvSize(640, 480), 8, 1);
我想最接近的值用“0”表示,最遠(yuǎn)的值用“255”表示 .
之后,我在深度坐標(biāo)到世界坐標(biāo)之間進(jìn)行轉(zhuǎn)換 . 我按照cv :: Mat灰度矩陣的元素逐個(gè)進(jìn)行,我在PointsWorld [640 * 480]中收集數(shù)據(jù) . 為了顯示這些數(shù)據(jù),我調(diào)整了比例以便在2000x2000x2000矩陣中收集值 .
cv::Point3f depthPoint;
cv::Point3f PointsWorld[640*480];
for (int j=0;j
{
for(int i=0;i
{
depthPoint.x = (float) i;
depthPoint.y = (float) j;
depthPoint.z = (float) m_depthImage.at(j, i);
if (depthPoint.z!=255)
{
openni::CoordinateConverter::convertDepthToWorld(*m_depth,depthPoint.x,depthPoint.y,depthPoint.z, &wx,&wy,&wz);
wx = wx*7,2464; //138->1000
if (wx
if (wx>999) wx = 999;
wy = wy*7,2464; //111->1000 with 9,009
if (wy
if (wy>999) wy = 999;
wz=wz*7,8431; //255->2000
if (wz>1999) wy = 1999;
Xsp = P-floor(wx);
Ysp = P+floor(wy);
Zsp = 2*P-floor(wz);
PointsWorld[k].x = Xsp;
PointsWorld[k].y = Ysp;
PointsWorld[k].z = Zsp;
k++;
}
}
}
但我確信這樣做不會(huì)讓我理解點(diǎn)之間的真實(shí)距離 . x,y,z坐標(biāo)是什么意思?有一種方法可以知道點(diǎn)之間的實(shí)際距離,知道有多遠(yuǎn),例如矩陣“255”的灰度值? wx,wy,wz它們的用途是什么?
總結(jié)
以上是生活随笔為你收集整理的JAVA world转图片,将Kinect深度图像转换为真实世界坐标的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电脑免费使用杜比音效的方法电脑怎么播放杜
- 下一篇: 对MATLAB课程教程的建议,关于MAT