windows - 检测 Microsoft Surface 上的相机旋转?

标签 windows camera ms-media-foundation surface-pro

是否有可靠的方法来确定相机是否在 Microsoft Surface 上旋转?

基本上,我想知道设备中是否内置了特定的摄像头(因为它会随着设备旋转),有没有办法查询这个?

我的问题是,当用户旋转设备时,我的摄像头 View 会翻转,但我不能假设我应该只旋转读取的帧,因为事件摄像头可能是外部 USB 摄像头。

我正在使用媒体基础 API 读取摄像头。

最佳答案

Basically, I want to know if a specific camera is built into the device [...] is there a way to query this?

使用 UWP,您可以检查相机的 DeviceInformationenclosureLocation . panel属性,可以是:

  • front/back/etc 用于集成摄像头或
  • 未知 外置摄像头

CameraStarterKit 中提供了完整示例样本。


但是,如果您不能使用 UWP,应该仍然可以找到底层信息。使用 MF,您应该能够访问 MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK .

这会是这样的

\\?\usb#vid_046d&pid_0843&mi_00#6&2314864d&0&0000#{e5323777-f976-4f5b-9b55-b94699c46e44}\global

内置摄像头是supposed to register它的物理位置在

HKLM\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{GUID}

其中 PLD_Panel 的值键应该是一个 DWORD,其值与上面引用的 Panel 枚举非常相似。

这里,6 表示未知。因此,您应该能够检查此注册表项是否存在,如果存在,则检查其值。我怀疑这类似于 UWP 在幕后所做的事情。

否则,您还可以通过对相机供应商和产品 ID 或 MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME 的一些值进行硬编码来获得支持。的。

关于windows - 检测 Microsoft Surface 上的相机旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674758/

相关文章:

python - Virtualenvwrapper 在错误的目录中创建项目?

windows - 检查其他系统中 Git 存储库的状态

python - Windows命令行, "python3"指向错误的python3.exe

android - 感兴趣区域

mp4 - MFCreateFMPEG4MediaSink 不生成 MSE 兼容的 MP4

c# - 使用 SharpDx 或 IMSourceReader 从 mp4 文件中读取第二个音轨流

windows - 错误 : mkdir . .. 文件名、目录名或卷标语法不正确

Android 相机安全打开/关闭

opencv - 训练 DLib 行人 HoG 检测器导致检测器错误

c++ - 使用 SinkWriter(媒体基础)c++ 时发生内存泄漏