2016-02-16 6 views
2

Мне интересно, есть ли способ повернуть изображение, которое я получаю от кинекта с углом 90 градусов, чтобы я мог повесить кинжет вертикально, и как это все еще отслеживать тела?Можно ли отслеживать тела с kinect, когда он вертикальный, а не горизонтальный?

Потому что, когда вы вешаете его вертикально, он не отслеживает ничего, что, по моему мнению, является нормальным, поскольку оно запрограммировано только на поиск тел, когда оно вертикально, но есть ли способ обойти это?

Я попытался найти способ поворота WriteableBitmap, например, я нашел несколько примеров в Интернете, но без везения. Я думаю, если я должен делать что-то я должен сделать это в этой части кода:

частной ничтожной Reader_ColorFrameArrived (объект отправителя, ColorFrameArrivedEventArgs е) {

 // ColorFrame is IDisposable 
     using (ColorFrame colorFrame = e.FrameReference.AcquireFrame()) 
     { 
      if (colorFrame != null) 
      { 
       FrameDescription colorFrameDescription = colorFrame.FrameDescription; 

       using (KinectBuffer colorBuffer = colorFrame.LockRawImageBuffer()) 
       { 
        this.colorBitmap.Lock(); 

        // verify data and write the new color frame data to the display bitmap 
        if ((colorFrameDescription.Width == this.colorBitmap.PixelWidth) && (colorFrameDescription.Height == this.colorBitmap.PixelHeight)) 
        { 

         colorFrame.CopyConvertedFrameDataToIntPtr(
          this.colorBitmap.BackBuffer, 
          (uint)(colorFrameDescription.Width * colorFrameDescription.Height * 4), 
          ColorImageFormat.Bgra); 

         this.colorBitmap.AddDirtyRect(new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight)); 
        } 


        this.colorBitmap.Unlock(); 
       } 
      } 
     } 
    } 

Но я не в состоянии выяснить, что делать, чтобы произошло поворот.

Спасибо!

+0

Вы исправились? Я столкнулся с той же проблемой. –

ответ

1

Работа с цветным изображением не поможет вам, так как алгоритм Body Tracking основан только на данных глубины.

Также, если вам нужно использовать Microsoft Kinect SDK, нет возможности «изменить» алгоритм и данные, переданные ему. Действительно, вам нужно будет поворачивать изображение глубины до того, как оно будет передано в тело трекера, что просто невозможно с этим SDK.

Я не уверен, что это можно сделать с использованием других фреймворков. Однако вы можете поместить некоторые объективы перед используемыми устройством, чтобы повернуть изображение. Или вы можете разобрать устройство и попытаться повернуть объективы на 90 градусов ... Это зависит от вас.

Надеюсь, это поможет.