有沒有可靠的方法來確定相機是否在Microsoft Surface上旋轉?檢測Microsoft Surface上的相機旋轉?
基本上,我想知道如果一個特定的相機內置到設備中(因爲它會隨着設備旋轉),有沒有一種方法來查詢這個?
我的問題是,當用戶旋轉設備,我的相機視圖翻轉,但我不能假定我應該只是旋轉閱讀框,因爲活動相機可能是外部USB相機。
我正在使用Media Foundation API讀取相機。
有沒有可靠的方法來確定相機是否在Microsoft Surface上旋轉?檢測Microsoft Surface上的相機旋轉?
基本上,我想知道如果一個特定的相機內置到設備中(因爲它會隨着設備旋轉),有沒有一種方法來查詢這個?
我的問題是,當用戶旋轉設備,我的相機視圖翻轉,但我不能假定我應該只是旋轉閱讀框,因爲活動相機可能是外部USB相機。
我正在使用Media Foundation API讀取相機。
基本上,我想知道如果一個特定的相機內置到設備有沒有辦法查詢這個?
使用UWP,您可以檢查相機的DeviceInformation
的enclosureLocation
。 panel
屬性,它可以是:
front
/back
/等用於集成照相機或unknown
用於外部照相機一個完整的例子是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
表示unknown
。所以你應該能夠檢查這個註冊表項的存在,如果存在的話,檢查它的值。我懷疑這與UWP所做的相似。
如果不成功,您還可以通過對相機供應商和產品ID或MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME
的某些值進行硬編碼來支持。
這看起來像正是我需要的,非常棒!但是,在我的Surface Pro 3設備(運行Windows 10)中查看註冊表編輯器時,InternalDeviceModification鍵缺失。有任何想法嗎? – monoceres
我不太確定這是否有幫助,但是您可以檢查相機媒體類型的MF_MT_DEFAULT_STRIDE屬性:https://msdn.microsoft.com/en-us/library/windows/desktop/ms698965(v = vs.85)的.aspx。 「步幅對自上而下的圖像爲正,對自下而上的圖像爲負。」 – VuVirt
我不認爲就是這樣,例如,設備可能旋轉90度。 :( – monoceres
這是['MF_MT_VIDEO_ROTATION'](https://msdn.microsoft.com/en-us/library/windows/desktop/hh162880),但我不確定Surface相機是否真的使用它。 –