feat: 添加PoseTransformHandler接口 提供结欢过滤方法的功能

添加直接返回和平均过滤两种过滤方法
This commit is contained in:
2023-03-01 22:07:39 +08:00
parent aaba183c48
commit 2d2adefb96
11 changed files with 114 additions and 47 deletions

View File

@@ -0,0 +1,41 @@
using Models;
using UnityEngine;
using System.Collections.Concurrent;
namespace Utils.PoseTransformHandlers
{
public class AverageHandler : IPoseTransformHandler
{
public static int AverageLength = 3;
// 线程安全的队列集合
// 据文档描述甚至没有使用锁
private readonly ConcurrentQueue<PoseLandmark> _queue = new ConcurrentQueue<PoseLandmark>();
public void ReceivePoseLandmark(PoseLandmark landmark)
{
if (_queue.Count < AverageLength)
{
_queue.Enqueue(landmark);
}
else
{
if (_queue.TryDequeue(out _))
{
_queue.Enqueue(landmark);
}
}
}
public Vector3 GetResultPosition()
{
var sum = new Vector3();
foreach (var item in _queue)
{
sum += new Vector3(item.X, item.Y, item.Z);
}
return sum / AverageLength;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c02b0d03301d408faf81931a69679f5c
timeCreated: 1677676898

View File

@@ -0,0 +1,20 @@
using Models;
using UnityEngine;
namespace Utils.PoseTransformHandlers
{
public class NormalHandler : IPoseTransformHandler
{
private Vector3 _result;
public void ReceivePoseLandmark(PoseLandmark landmark)
{
_result = new Vector3(landmark.X, landmark.Y, landmark.Z);
}
public Vector3 GetResultPosition()
{
return _result;
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 93a33f47f3654fd3b27dd18db88fcc55
timeCreated: 1677678654