2017-02-21 8 views
1

Wir verwenden die lokalisierbare Kamera des HoloLens (in Unity), um eine Reihe von Bilderkennungsaufgaben durchzuführen. Wir möchten die Mixed-Reality-Capture-Funktion (MRC) nutzen, die im HoloLens-Entwicklerportal verfügbar ist, damit wir unsere App demonstrieren können, aber MRC stürzt ab, weil wir die Kamera im Fotomodus hacken.Objekterkennung mit Mixed Reality Capture (MRC)

Hat jemand einen guten Workaround dafür? Wir hatten einige Ideen, aber keine von ihnen hat große Nachteile.

Lösung: Setzen Sie Ihre lokalisierbare Kamera in den Videomodus, damit Sie die Videokamera mit MRC teilen können. Nachteil: Video-Modus ermöglicht es uns nur, das Video auf der Festplatte zu speichern, aber wir benötigen Echtzeit-Zugriff auf den Puffer im Speicher (die Art, wie Fotomodus Zugriff gewährt), so dass wir unsere Erkennung in Echtzeit tun können.

Lösung: Erfassen Sie das Video in einem C++ - Plugin, und übergeben Sie die Rahmenbytes an Unity. Dadurch kann MRC wie erwartet arbeiten. Nachteil: Wir verlieren den "lokalisierbaren" Teil der "lokalisierbaren Kamera", da wir keinen Zugriff mehr auf die cameraSpaceToWorldSpace-Transformationsmatrix haben, die wir in unserer Benutzeroberfläche verwenden, um unsere erkannten Objekte im Weltbereich zu lokalisieren. Sub-Lösung: erstellen Sie die Transformationsmatrix der lokalisierbaren Kameraansicht selbst neu. Sub-Downside: Ich habe keinen Einblick, wie Microsoft diese Transformationsmatrix erstellt. Ich stelle mir vor, dass es einige Hardwarekomplexitäten beinhaltet, wie beispielsweise die Berücksichtigung von Linsenverzerrungen. Wenn mir jemand helfen kann, wie diese Matrix erstellt wird, könnte das eine Lösung sein.

Lösung: Objekterkennung deaktivieren, während Sie die MRC erstellen, es dann wieder ein, wenn Sie mit der Aufnahme fertig Nachteil: Unser Erkennungssystem in Echtzeit ausgeführt wird, n-mal pro Sekunde. Es gäbe keine Möglichkeit, die Anerkennungen auf Video festzuhalten.

Antwort

1

Wir haben schließlich ein Plugin für Unity erstellt, das Microsoft Media Foundation verwendet, um Zugriff auf die Videokamerarrahmen zu erhalten. Wir open sourced it für den Fall, dass jemand anderes in dieses Problem läuft.

Das Plugin ahmt Unity's VideoCapture class nach, so dass Entwickler leicht verstehen werden, wie man es implementiert.

Hoffentlich ist dies hilfreich für einige.