我正在试验kinect,但是我在缩放时遇到了一些问题。下面是来自kinect-kcb的代码,虽然面部跟踪适用于“网格”,但我在为自己的类返回缩放值时遇到问题。下面的代码返回一个正确的旋转和平移,它的功能是完美的,但是这个尺度只能在很长一段时间内返回1(尽管网格尺寸明显变化),然后慢慢变小0.98 ...等,但显然不是正确的缩放值。Kinect在C++中的缩放
float scale;
float rotation[ 3 ];
float translation[ 3 ];
hr = mResult->Get3DPose(&scale, rotation, translation);
if (SUCCEEDED(hr)) {
Vec3f r(rotation[ 0 ], rotation[ 1 ], rotation[ 2 ]);
Vec3f t(translation[ 0 ], translation[ 1 ], translation[ 2 ]);
face.mPoseMatrix.translate(t);
face.mPoseMatrix.rotate(r);
face.mPoseMatrix.translate(-t);
face.mPoseMatrix.translate(t);
face.mPoseMatrix.scale(Vec3f::one() * scale);
}
此比例值被重复使用thoughout的代码,但似乎没有足够经常改变(例如功能 - 不按顺序):
hr = mModel->Get3DShape(shapeUnits, numShapeUnits, animationUnits, numAnimationUnits, scale, rotation, translation, pts, numVertices);
hr = mModel->GetProjectedShape(&mConfigColor, mSensorData.ZoomFactor, viewOffset, shapeUnits, numShapeUnits, animationUnits,
numAnimationUnits, scale, rotation, translation, pts, numVertices);
Kinect的具有功能FaceModel.Scale( ),但是这只会返回一个常数值,我假设它是3D模型的初始缩放值,然后我假设上面的缩放值会随着用户离摄影机越来越近而改变。
所以即时猜测你的目标是使用比例值来尝试和判断距相机的距离? – ldgorman 2014-11-05 11:58:18
我最终发现了三维模型的z值(希望有一个更好的方法)。谢谢你的帮助 :)。 – user1546650 2014-11-05 14:41:07