Ich versuche, die Ausgabe von Kinect 2 auf dem Web-Browser zu zeigen, ein Tutorial folgenden hier gegeben, http://www.webondevices.com/xbox-kinect-2-javascript-gesture-tracking/Ausgabe von Kinect 2 auf Browser Node.js und Javascript
Ich habe das Gerät bekommen konnte Ausgabe als JSON-Objekte im Browser-Konsole
var Kinect2 = require('kinect2'),
express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
var kinect = new Kinect2();
app.use(express.static(__dirname + '/View'));
app.use(express.static(__dirname + '/Script'));
if(kinect.open()) {
console.log('kinect opened');
server.listen(8000);
console.log('Server listening on port 8000');
kinect.on('bodyFrame', function(bodyFrame){
io.sockets.emit('bodyFrame', bodyFrame);
});
kinect.openBodyReader();
app.get('/', function(req, res) {
res.sendFile(__dirname + '/View/output.html');
});
setTimeout(function(){
kinect.close();
console.log("Kinect Closed");
}, 100000);
}
Output.html diesen Code in server.js verwenden, die Seite, wo ich die Ausgabe zeigen wollen, auf eine Leinwand wie diese
<html>
<head>
<title>
Kinect Output On Canvas
</title>
<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
<link rel="stylesheet" href="/style.css" />
</head>
<body>
<h1>Kinect & HTML5 WebSockets</h1>
<canvas id="canvas" width="640" height="480"></canvas>
<script>
var socket = io.connect('http://localhost:8000/');
socket.on('bodyFrame', interpretData);
function interpretData(bodyFrame) {
// Web Socket message:
console.log(bodyFrame); //outputs each bodyframe as a JSON object, 30+ frames/JSON objects in the browser per second
}
</script>
</body>
sieht
die Struktur jedes Objekt JSON jedes Skeletts zeigt Position nachgeführt ist als solche
{ bodyIndex: 5,
tracked: true,
trackingId: '72057594038115298',
leftHandState: 1,
rightHandState: 1,
joints:
[ { depthX: 0.24323934316635132,
depthY: 0.5925129055976868,
colorX: 0.33547070622444153,
colorY: 0.6129662394523621,
cameraX: -0.34261977672576904,
cameraY: -0.10602515190839767,
cameraZ: 0.9753329753875732,
orientationX: -0.04046249017119408,
orientationY: 0.9915661215782166,
orientationZ: -0.05280650407075882,
orientationW: 0.11122455447912216 },
{ depthX: 0.21760234236717224,
depthY: 0.3140539526939392,
colorX: 0.31521913409233093,
colorY: 0.2960273027420044,
cameraX: -0.36364009976387024,
cameraY: 0.19814369082450867,
cameraZ: 0.9404330253601074,
orientationX: -0.04830155894160271,
orientationY: 0.9615150094032288,
orientationZ: -0.04574603587388992,
orientationW: 0.26657652854919434 },
...... Es gibt 24 Arrays mit ähnlichen Parametern in dem Array Gelenke 24 an jede entsprechende Gelenke verfolgt.
Um ein Skelett im Browser zu zeigen, ich habe
versuchtvar ctx = document.getElementById('canvas').getContext('2d');
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 20, 20);
var imgData = ctx.getImageData(10, 10, 15, 15);
innerhalb der for-Schleife für jedes Objekt JSON empfangen
ctx.putImageData(imgData, x, y); // x and y are the depth x positions of left and right hands
was diese Ausgänge ist nur ein Platz Fleck auf der Leinwand und ein anderer in der linken Ecke der Leinwand, was ich verstehe, weil das die Koordinaten sind, die ihm zugeführt werden. Ich möchte wissen, wie ich Daten interpretieren kann, die ich im Joints-Array für jedes Gelenk als Formel bekomme, und zeige einen getrackten Ort im Browser, damit ich ein Skelett im Browser anzeigen kann. Ich überprüfe die tatsächlichen Tracking-Ergebnisse und die Videoausgabe in der Kinect Studio v2.0 Desktop App.
Jeder möglicher Vorschlag