Kann Kinect V2 in einem Docker-Container ausgeführt werden?

8

Ich untersuche die Machbarkeit eines C # Kinect Visual Gesture Programms (etwas wie das Projekt "Continuous Gesture Basics" https: // github. com / angelaHillier / ContinuousGestureBasics-WPF) innerhalb eines Docker für Windows-Containers

>
  1. Ist das sogar theoretisch möglich? (Führen Sie C # Kinect in einem Docker für Windows Container aus?)

  2. Wenn die Antwort auf 1 ja ist, hier einige zusätzliche Details:

Ich benutze das Microsoft / Dotnet-Framework: 4.7 Image als Basis und meine anfängliche Dockerfile sieht so aus:

%Vor%

Erstellen Sie das Bild:

%Vor%

Aktivieren Sie den Container:

%Vor%

Anhängen an eine Powershell-Sitzung an Affen herum:

%Vor%

Wenn ich versuche, meine Gestenanwendung über den Docker-Container auszuführen, erhalte ich den folgenden Fehler (der erwartet wird, seit kein Kinect SDK im Container installiert wurde):

%Vor%

An diesem Punkt ist die große Frage, wie man das Kinect v2 SDK [KinectSDK -v2.0_1409-Setup.exe] oder die Kinect v2-Laufzeit [KinectRuntime -v2.0_1409-Setup.exe] im Container.

Die Installationsprogramme haben eine EULA und gemäß einige kluge University of Wisconsin Leute , gibt es eine Technik, um Installer mit Wix dark.exe decompiler zu extrahieren ( Ссылка )

ex.

%Vor%

Das Problem, auf das ich stieß, als ich zu den zugrunde liegenden msi-Dateien kam, ist, dass es keine Option gibt, sie stillschweigend mit msiexec auszuführen.

Ich habe herausgefunden, dass das Laufzeit-Installationsprogramm (Laufzeit-Installationsprogramm (KinectRuntime-x64.msi), das aus dem Kinect v2 SDK extrahiert wurde) mindestens die folgenden Änderungen im Dateisystem vornimmt:

Erstellt einen Ordner "Kinect" in C: \ Windows \ System32 und fügt 3 Dateien zu System 32 hinzu:

k4wcll.dll

kinect20.dll

microsoft._kinect.dll

Die letzten drei Dateien in System32 sollten die 64-Bit-Versionen sein (das Installationsprogramm scheint x86- und x64-Versionen dieser drei zu haben)

Das manuelle Replizieren dieser Änderungen führt nicht zum Erfolg auf dem Hostcomputer, geschweige denn im Container.

Es ist derzeit unklar, welche anderen Änderungen an Registry / System beim Installer auftreten (und ob uns das über die Zielzeile im Docker-Container bringen würde)

Irgendwelche Ideen, wie man von hier aus vorgeht?

    
Victor 13.12.2017, 16:25
quelle

2 Antworten

1

Kurz gesagt nein. docker auf Windows hat nicht die Möglichkeit, Hardware zu tunneln / zu mappen. Unter Linux geschieht dies über die Option --device=

Da @VonC angegeben hat, dass Sie eine Windows-VM verwenden müssen, könnte dies Hyper-V sein oder Sie können Virtual Box verwenden, dann können Sie die Kinect-Hardware über die Tunneling-Methode (add / connect device) bereitstellen, ohne dass dies erforderlich wäre Keine Möglichkeit für deinen Container sei diese VM oder nicht auf die Hardware des Host Rechners mit Windows zuzugreifen.

    
Martin Barker 21.12.2017, 13:31
quelle
0

Ein anderer Ansatz besteht darin, Kinetic auf einer Windows-Server-VM zu installieren und die genauen Änderungen zu ermitteln, die durch diese Installation verursacht werden.

Siehe zum Beispiel " Wie kann ich herausfinden, welche Änderungen der Installer eines Programms macht? " und ein Tool wie ZSoft Uninstaller 2.5 .

Sobald Sie genau bestimmt haben, welche Dateien / Registry / Variablen vom Installationsprozess betroffen sind, können Sie diese in einer Docker-Datei replizieren.

    
VonC 16.12.2017 06:02
quelle

Tags und Links