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设备有不同的解释。

### 独立传感器组

对于独立传感器组,位置和方向表示组在传感器坐标系中的原点位置。 例如, Position 值 {-5, 0, 0} 表示原点距离传感器左侧 5 米,因此传感器位于原点右侧 5 米处。 位于原点上方 2 米处的传感器应指定 {0, -2, 0} 的位置,因为这是相对于传感器的原点位置。

如果传感器与原点对齐,则旋转是标识四元数,正向量沿 -Z 轴 {0, 0, -1}。 如果传感器从原点 ((即左) )绕 Y 轴旋转 +30 度,则 “方向” 值应为绕 Y 轴旋转 -30 度,因为它表示相对于传感器的原点方向。

Windows Mixed Reality设备

连接到Windows Mixed Reality设备的传感器 (例如,HoloLens) 使用相反的约定来表示其校准,因此位置和方向指示传感器设备坐标系中的位置。 例如,位于设备原点右侧 5 厘米处的传感器的位置为 {0.05, 0, 0},因为这是传感器相对于设备的位置。 同样,如果传感器从设备 (绕 Y 轴旋转 +10 度,即向左) 旋转,则 方向 值将是围绕 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

另请参阅

媒体基础结构