2017-01-16 3 views
6

Gibt es eine zuverlässige Möglichkeit zu bestimmen, ob eine Kamera auf der Microsoft Surface gedreht wird?Kamera-Rotation auf Microsoft Surface erkennen?

Grundsätzlich möchte ich wissen, ob eine bestimmte Kamera in das Gerät eingebaut ist (wie es dann mit dem Gerät drehen wird), gibt es eine Möglichkeit, dies abzufragen?

Mein Problem ist, dass, wenn der Benutzer das Gerät dreht, meine Kameraansicht gekippt ist, ich kann jedoch nicht davon ausgehen, dass ich nur die Leserahmen drehen sollte, da die aktive Kamera eine externe USB-Kamera sein kann.

Ich lese die Kameras mit den Media Foundation APIs.

+0

Ich bin nicht ganz sicher, ob das hilft, aber Sie können das Attribut MF_MT_DEFAULT_STRIDE des Medientyps der Kamera überprüfen: https://msdn.microsoft.com/en-us/library/windows/desktop/ms698965(v = vs.85) .aspx. "Schritt ist positiv für Top-down-Bilder und negativ für Bottom-up-Bilder." – VuVirt

+0

Ich glaube nicht, dass es das ist, zum Beispiel kann das Gerät um 90 Grad drehen. :( – monoceres

+1

Es ist eher ['MF_MT_VIDEO_ROTATION'] (https://msdn.microsoft.com/en-us/library/windows/desktop/hh162880) aber ich bin mir nicht sicher, ob die Surface-Kamera es tatsächlich benutzt. –

Antwort

2

Grundsätzlich möchte ich wissen, ob eine bestimmte Kamera in das Gerät eingebaut ist [...] gibt es eine Möglichkeit, dies abzufragen?

Mit UWP, können Sie die DeviceInformation der Kamera überprüfen ‚s enclosureLocation. panel Eigenschaft, die entweder ist:

  • front/back/etc für eine integrierte Kamera oder
  • unknown für eine externe Kamera

Ein vollständiges Beispiel ist in der CameraStarterKit Probe zur Verfügung.


jedoch, wenn Sie nicht UWP verwenden kann, sollte es noch möglich sein, die zugrunde liegenden Informationen zu finden. Mit MF sollten Sie auf MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK zugreifen können.

Das wird so etwas wie

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

werden, um eine integrierte Kamera ist supposed to register seine physischen Standort in

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

Wo der Wert der PLD_Panel Schlüssel sollte ein DWORD mit Werten sehr ähnlich sein die oben erwähnte Panel enum.

Hier bedeutet 6unknown. Sie sollten also in der Lage sein, nach dem Vorhandensein dieses Registrierungsschlüssels zu suchen und, falls vorhanden, dessen Wert zu überprüfen. Ich vermute, das ist ähnlich wie UWP unter der Haube.

Wenn dies nicht möglich ist, können Sie die Unterstützung auch hacken, indem Sie einige Werte für Kameraanbieter- und Produkt-IDs oder MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME fest codieren.

+0

Das sieht so aus genau das, was ich brauche.Wenn Sie jedoch in regedit auf meinem Surface Pro 3-Gerät (Windows 10 ausführen) suchen, fehlt der Schlüssel InternalDeviceModification. Irgendwelche Ideen? – monoceres

Verwandte Themen