我正在試驗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