Skip to content

Commit

Permalink
fix export with discrete only, add skeleton painter
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiasbaur committed Nov 14, 2024
1 parent 1cdad8e commit f04e127
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Controls/MainHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public partial class MainHandler
{

//Config
public static string BuildVersion = "1.2.8.7";
public static string BuildVersion = "1.2.9.1";
public static MEDIABACKEND MediaBackend = (Properties.Settings.Default.MediaBackend == "Hardware") ? MEDIABACKEND.MEDIAKIT : MEDIABACKEND.MEDIA;
public static bool ENABLE_PYTHON = Properties.Settings.Default.EnablePython;
public static bool ENABLE_LIGHTNING = Properties.Settings.Default.EnableLightning;
Expand Down
4 changes: 3 additions & 1 deletion Controls/MainHandlerFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
using Tamir.SharpSsh.java.lang;
using NDtw;
using System.Windows.Media.Media3D;
using MongoDB.Driver.Core.Misc;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Tab;

namespace ssi
{
Expand Down Expand Up @@ -660,7 +662,7 @@ private void loadSignalFile(string filename, Color signalColor, Color background
}


else if (signal.Meta.ContainsKey("name") && signal.Meta["name"] == "skeleton")
else if (signal.Meta.ContainsKey("name") && signal.Meta["name"] == "skeleton" || (signal.Meta.ContainsKey("type") && signal.Meta["type"].Contains("feature;body;skeleton")))
{
IMedia media = new Skeleton(filename, signal, mwidth, mheight);
addMedia(media);
Expand Down
14 changes: 14 additions & 0 deletions Database/DatabaseHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4664,6 +4664,20 @@ public static AnnoList ConvertDiscreteAnnoListToContinuousList(AnnoList annolist
length = (int)Math.Max(length, signals.Max(e => e.number));
}

else
{
length = int.MaxValue;

foreach (DatabaseAnnotation anno in annos)
{
AnnoList annoList = LoadAnnoList(anno, false);
if (annoList.Count < length)
{
length = (int)( annoList[annoList.Count-1].Stop * sr);
}
}
}


foreach (DatabaseAnnotation annotation in annos)
{
Expand Down
54 changes: 43 additions & 11 deletions Types/Skeleton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

namespace ssi
{
class TestArgs : EventArgs
{
public bool scale { get; set; }
}
public class Skeleton : Image, IMedia, INotifyPropertyChanged
{
public enum SkeletonType
Expand All @@ -34,6 +38,7 @@ public enum SkeletonType

private int width;
private int height;
private bool normalized = false;

private int numJoints = 0;
private int jointValues = 0;
Expand Down Expand Up @@ -97,20 +102,28 @@ public Skeleton(string filepath, Signal signal, int width = 640, int height = 48
int.TryParse(signal.Meta["num"], out numSkeletons);
}

this.normalized = false;
if (signal.Meta.ContainsKey("normalized"))
{
bool.TryParse(signal.Meta["normalized"], out this.normalized);
}



numJoints = 0;
if (signal.Meta.ContainsKey("type"))
{
if (signal.Meta["type"] == "ssi")
if (signal.Meta["type"].Contains("ssi") || signal.Meta["type"].Contains("blazepose"))
{
skelType = SkeletonType.SSI;
numJoints = 25;
}
else if (signal.Meta["type"] == "kinect1")
else if (signal.Meta["type"].Contains("kinect1"))
{
skelType = SkeletonType.KINECT1;
numJoints = 20;
}
else if (signal.Meta["type"] == "kinect2")
else if (signal.Meta["type"].Contains("kinect2"))
{
skelType = SkeletonType.KINECT2;
numJoints = 25;
Expand All @@ -133,9 +146,15 @@ public Skeleton(string filepath, Signal signal, int width = 640, int height = 48

timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(1000.0 / signal.rate);
timer.Tick += new EventHandler(Draw);
TestArgs args = new TestArgs();

args.scale = true;
// timer.Tick += (sender, e) => Draw(sender, args);

timer.Tick += new EventHandler(Draw);
}


public void Draw(object myObject, EventArgs myEventArgs)
{
Draw(MainHandler.Time.CurrentPlayPosition);
Expand Down Expand Up @@ -166,6 +185,7 @@ public void Draw(double time)

//Kinect Stream Resolution
uint dim = signal.dim;


for (int s = 0; s < numSkeletons; s++)
{
Expand All @@ -176,13 +196,25 @@ public void Draw(double time)
switch (skelType)
{
case SkeletonType.SSI:
{
{
if (this.normalized)
{
points[i].X = (int)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 0] * width * 75 / width + width / 2);
points[i].Y = (int)(height - signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 1] * height* 75 / height - height / 2);
confs[i] = (float)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 3]);
break;

}
else
{
points[i].X = (int)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 0] * 75 / width + width / 2);
points[i].Y = (int)(height - signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 1] * 75 / height - height / 2);
confs[i] = (float)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 3]);
break;
}


points[i].X = (int)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 0] * 75 / width + width / 2);
points[i].Y = (int)(height - signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 1] * 75 / height - height / 2);
confs[i] = (float)(signal.data[s * dim / numSkeletons + (index * dim) + i * jointValues + 3]);
break;

}
case SkeletonType.KINECT1:
{
Expand Down Expand Up @@ -229,8 +261,8 @@ public void Draw(double time)
if (confs[21] > 0.1 && confs[20] > 0.1)
writeableBmp.DrawLine((int)points[21].X, (int)points[21].Y, (int)points[20].X, (int)points[20].Y, getColor(25, true)); //Left Ear to Nose

if (confs[21] > 0.1 && confs[20] > 0.1)
writeableBmp.DrawLine((int)points[21].X, (int)points[21].Y, (int)points[20].X, (int)points[20].Y, getColor(25, true)); //Left Ear to Nose
if (confs[22] > 0.1 && confs[20] > 0.1)
writeableBmp.DrawLine((int)points[22].X, (int)points[22].Y, (int)points[20].X, (int)points[20].Y, getColor(25, true)); //Right Ear to Nose

if (confs[21] > 0.1 && confs[24] > 0.1)
writeableBmp.DrawLine((int)points[21].X, (int)points[21].Y, (int)points[24].X, (int)points[24].Y, getColor(25, true)); //Left Ear to Chin
Expand Down
Binary file modified bin/nova.exe
Binary file not shown.

0 comments on commit f04e127

Please sign in to comment.