Share via


MFCameraExtrinsic_CalibratedTransform 結構 (mfapi.h)

轉換,描述相機相對於其他相機的位置或已建立的外部參考。

語法

typedef struct _MFCameraExtrinsic_CalibratedTransform {
  GUID          CalibrationId;
  MF_FLOAT3     Position;
  MF_QUATERNION Orientation;
} MFCameraExtrinsic_CalibratedTransform;

成員

CalibrationId

識別數據校正程序的參考 GUID,可讓不同的取用者識別來自相同程式的校正數據。

Position

轉換位置。

Orientation

轉換旋轉。

備註

Position 值應該以公尺單位以真實世界座標表示。 位置和方向的座標系統應該是右手的笛卡兒,如下圖所示。

右手笛卡兒座標系統
重要

位置方向對於獨立感測器群組和 Windows Mixed Reality 裝置有不同的解譯。

### 獨立感測器群組

對於獨立感測器群組,位置和方向會表示感測器座標系統中群組原點的位置。 例如, 位置 值為 {-5, 0, 0} 表示原點在感測器左邊 5 公尺,因此感測器在原點右邊為 5 公尺。 位於原點上方 2 公尺的感測器應該指定 {0, -2, 0} 的位置 ,因為這是相對於感測器的來源位置。

如果感測器與原點對齊,旋轉是識別四元數,而向前向量則沿著 -Z 軸 {0, 0, -1}。 如果感測器繞 Y 軸旋轉 +30 度,也就是從原點 (到左) ,則 Orientation 值應該是繞 Y 軸旋轉 -30 度,因為它代表相對於感測器的原點方向。

Windows Mixed Reality裝置

連接到 Windows Mixed Reality 裝置的感測器 (例如 HoloLens) 使用相反慣例來表示校正,因此位置和方向會指出裝置座標系統中感測器的位置。 例如,位於裝置原點右邊 5 公分的感測器將會有 {0.05, 0, 0} 的位置,因為這是相對於裝置的位置。 同樣地,如果感測器從裝置繞著 Y 軸旋轉 +10 度,也就是從裝置 (到左側) ,則 Orientation 值會是與 Y 軸相關的 +10 度旋轉,因為它代表感測器相對於裝置的方向。 此外,CalibrationId 也可以傳遞至 SpatialGraphInteropPreview.CreateLocatorForNode,以建立代表 Windows Mixed Reality 裝置的 SpatialLocator。 這可用來計算指定框架空間中感測器的位置,方法是在擷取框架時查詢 SpatialLocator 的位置,並將這與MFCameraExtrinsic_CalibratedTransform的位置和方向結合。 若要查詢裝置的畫面位置,請將 IMFSample::GetSampleTime 所提供的畫面時間戳傳遞至 PerceptionTimestampHelper.FromSystemRelativeTargetTime,並將產生的 PerceptionTimestamp 傳遞至 SpatialLocator.TryLocateAtTimestamp

若要判斷 IMFSample 是否來自附加至 Windows Mixed Reality 裝置的感測器,請尋找附加至框架的下列屬性,設定為 MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode

typedef enum _MFCameraExtrinsicsCalibrationType
{
    MFCameraExtrinsicsCalibrationType_Unknown = 0,
    MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode = 1
} MFCameraExtrinsicsCalibrationType;

DEFINE_GUID(MFSampleExtension_CameraExtrinsicsCalibrationType, 0x3524e3b0, 0xc355, 0x49f1, 0xb8, 0xb0, 0xd0, 0xdd, 0x62, 0xde, 0x37, 0xa7);
 

規格需求

需求
最低支援的用戶端 Windows 10 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2016 [僅限傳統型應用程式]
標頭 mfapi.h

另請參閱

媒體基礎結構