62 lines
2.8 KiB
C#
62 lines
2.8 KiB
C#
|
using Microsoft.Azure.Kinect.BodyTracking;
|
|||
|
using Microsoft.Azure.Kinect.Sensor;
|
|||
|
using System;
|
|||
|
|
|||
|
namespace Csharp_3d_viewer
|
|||
|
{
|
|||
|
class Program
|
|||
|
{
|
|||
|
static void Main()
|
|||
|
{
|
|||
|
using (var visualizerData = new VisualizerData())
|
|||
|
{
|
|||
|
var renderer = new Renderer(visualizerData);
|
|||
|
|
|||
|
renderer.StartVisualizationThread();
|
|||
|
|
|||
|
// Open device.
|
|||
|
using (Device device = Device.Open())
|
|||
|
{
|
|||
|
device.StartCameras(new DeviceConfiguration()
|
|||
|
{
|
|||
|
CameraFPS = FPS.FPS30,
|
|||
|
ColorResolution = ColorResolution.Off,
|
|||
|
DepthMode = DepthMode.NFOV_Unbinned,
|
|||
|
WiredSyncMode = WiredSyncMode.Standalone,
|
|||
|
});
|
|||
|
|
|||
|
var deviceCalibration = device.GetCalibration();
|
|||
|
PointCloud.ComputePointCloudCache(deviceCalibration);
|
|||
|
|
|||
|
using (Tracker tracker = Tracker.Create(deviceCalibration, new TrackerConfiguration() { ProcessingMode = TrackerProcessingMode.Gpu, SensorOrientation = SensorOrientation.Default }))
|
|||
|
{
|
|||
|
while (renderer.IsActive)
|
|||
|
{
|
|||
|
using (Capture sensorCapture = device.GetCapture())
|
|||
|
{
|
|||
|
// Queue latest frame from the sensor.
|
|||
|
tracker.EnqueueCapture(sensorCapture);
|
|||
|
}
|
|||
|
|
|||
|
// Try getting latest tracker frame.
|
|||
|
using (Frame frame = tracker.PopResult(TimeSpan.Zero, throwOnTimeout: false))
|
|||
|
{
|
|||
|
if (frame != null)
|
|||
|
{
|
|||
|
// Save this frame for visualization in Renderer.
|
|||
|
|
|||
|
// One can access frame data here and extract e.g. tracked bodies from it for the needed purpose.
|
|||
|
// Instead, for simplicity, we transfer the frame object to the rendering background thread.
|
|||
|
// This example shows that frame popped from tracker should be disposed. Since here it is used
|
|||
|
// in a different thread, we use Reference method to prolong the lifetime of the frame object.
|
|||
|
// For reference on how to read frame data, please take a look at Renderer.NativeWindow_Render().
|
|||
|
visualizerData.Frame = frame.Reference();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|