跳远
This commit is contained in:
parent
1963f5d194
commit
c2729dfac0
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -52,7 +52,7 @@
|
||||
单人检测-高精度,3D结构
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:Yztob.AiSports.Inferences.Abstractions.HumanPredictorType.MultiFast">
|
||||
<member name="F:Yztob.AiSports.Inferences.Abstractions.HumanPredictorType.MultiLow">
|
||||
<summary>
|
||||
多人检测-低精度低速率,2D结构
|
||||
</summary>
|
||||
|
||||
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
<members>
|
||||
<member name="T:Yztob.AiSports.Postures.Abstractions.ICalculator">
|
||||
<summary>
|
||||
人体姿态计算检测执行器
|
||||
人体姿态检测规则执行计算器
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Postures.Abstractions.ICalculator.PointThreshold">
|
||||
@ -727,6 +727,17 @@
|
||||
一些扩展方法
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Extensions.GravityLine(Yztob.AiSports.Inferences.Things.Human)">
|
||||
<summary>
|
||||
获取当前<seealso cref="T:Yztob.AiSports.Inferences.Things.Human"/>的人体重力线
|
||||
</summary>
|
||||
<param name="human">要计算的人体</param>
|
||||
<returns>
|
||||
返回重力线的上、下起点
|
||||
[0]-为线的上端点
|
||||
[1]-为线的下端点
|
||||
</returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Extensions.AsPointF(Yztob.AiSports.Inferences.Things.Keypoint)">
|
||||
<summary>
|
||||
以<paramref name="keypoint"/>坐标值转换成<seealso cref="T:System.Drawing.PointF"/>
|
||||
@ -734,6 +745,13 @@
|
||||
<param name="keypoint">要转换的关键点</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Extensions.ToCenterPoint(System.Collections.Generic.IEnumerable{Yztob.AiSports.Inferences.Things.Keypoint})">
|
||||
<summary>
|
||||
获取当前关键点集中的中心点位置
|
||||
</summary>
|
||||
<param name="keypoints">关键点集</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Yztob.AiSports.Postures.Implement.Calculator">
|
||||
<summary>
|
||||
人体姿态计算检测执行器
|
||||
@ -1326,6 +1344,70 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Yztob.AiSports.Postures.PostureUtility">
|
||||
<summary>
|
||||
姿态分析相关工具函数集
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.GetBodyKeyNameMaps">
|
||||
<summary>
|
||||
获取身体关键点键-名映射字典
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.GetCameraViewName(Yztob.AiSports.Postures.Things.CameraViews)">
|
||||
<summary>
|
||||
获取相机视角名称
|
||||
</summary>
|
||||
<param name="view">当前视角</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.Angle(System.Nullable{System.Drawing.PointF},System.Nullable{System.Drawing.PointF},System.Nullable{System.Drawing.PointF})">
|
||||
<summary>
|
||||
计算平面三个点的角度
|
||||
</summary>
|
||||
<param name="center">角度点</param>
|
||||
<param name="second">上角点</param>
|
||||
<param name="third">下角点</param>
|
||||
<returns>
|
||||
-1至少一个有一个坐标点是空的;否则返回计算角度;
|
||||
</returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.Angle(Yztob.AiSports.Inferences.Things.Keypoint,Yztob.AiSports.Inferences.Things.Keypoint,Yztob.AiSports.Inferences.Things.Keypoint)">
|
||||
<summary>
|
||||
计算三个人体关键点角度
|
||||
</summary>
|
||||
<param name="center">角度人体关键点</param>
|
||||
<param name="second">上角人体关键点</param>
|
||||
<param name="third">下角人体关键点</param>
|
||||
<returns>
|
||||
计算后的角度
|
||||
</returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.AssertAngle(System.Single,System.Single,System.Single)">
|
||||
<summary>
|
||||
断言<paramref name="angle"/>是否有<paramref name="expect"/>匹配
|
||||
</summary>
|
||||
<param name="angle">实际测量的角度</param>
|
||||
<param name="expect">期望的角度</param>
|
||||
<param name="offset">允许的偏差</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.IoU(Yztob.AiSports.Inferences.Things.BoundingBox,Yztob.AiSports.Inferences.Things.BoundingBox)">
|
||||
<summary>
|
||||
计算两个边界框的交并比
|
||||
</summary>
|
||||
<param name="box1">框1</param>
|
||||
<param name="box2">框2</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.PostureUtility.CenterPoint(System.Collections.Generic.IEnumerable{Yztob.AiSports.Inferences.Things.Keypoint})">
|
||||
<summary>
|
||||
计算多个关键点之间的中心点位置
|
||||
</summary>
|
||||
<param name="keypoints">关键点集</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Yztob.AiSports.Postures.Sports.CounterTicked">
|
||||
<summary>
|
||||
运动计数器计数变化委托
|
||||
@ -1752,6 +1834,9 @@
|
||||
获取或设置垫子长度,单位cm
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Sports.SportStandingLongJump.Pushing(Yztob.AiSports.Inferences.Things.Human)">
|
||||
<inheritdoc />
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Sports.SportStandingLongJump.Pushing(Yztob.AiSports.Inferences.Things.Human,System.Collections.Generic.IEnumerable{Yztob.AiSports.Inferences.Things.BoundingBox})">
|
||||
<inheritdoc />
|
||||
</member>
|
||||
@ -2335,63 +2420,6 @@
|
||||
<param name="trend">当前势</param>
|
||||
<param name="isChanged">趋势是否变化</param>
|
||||
</member>
|
||||
<member name="T:Yztob.AiSports.Postures.Utility">
|
||||
<summary>
|
||||
姿态分析相关工具函数集
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.GetBodyKeyNameMaps">
|
||||
<summary>
|
||||
获取身体关键点键-名映射字典
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.GetCameraViewName(Yztob.AiSports.Postures.Things.CameraViews)">
|
||||
<summary>
|
||||
获取相机视角名称
|
||||
</summary>
|
||||
<param name="view">当前视角</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.Angle(System.Nullable{System.Drawing.PointF},System.Nullable{System.Drawing.PointF},System.Nullable{System.Drawing.PointF})">
|
||||
<summary>
|
||||
计算平面三个点的角度
|
||||
</summary>
|
||||
<param name="center">角度点</param>
|
||||
<param name="second">上角点</param>
|
||||
<param name="third">下角点</param>
|
||||
<returns>
|
||||
-1至少一个有一个坐标点是空的;否则返回计算角度;
|
||||
</returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.Angle(Yztob.AiSports.Inferences.Things.Keypoint,Yztob.AiSports.Inferences.Things.Keypoint,Yztob.AiSports.Inferences.Things.Keypoint)">
|
||||
<summary>
|
||||
计算三个人体关键点角度
|
||||
</summary>
|
||||
<param name="center">角度人体关键点</param>
|
||||
<param name="second">上角人体关键点</param>
|
||||
<param name="third">下角人体关键点</param>
|
||||
<returns>
|
||||
计算后的角度
|
||||
</returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.AssertAngle(System.Single,System.Single,System.Single)">
|
||||
<summary>
|
||||
断言<paramref name="angle"/>是否有<paramref name="expect"/>匹配
|
||||
</summary>
|
||||
<param name="angle">实际测量的角度</param>
|
||||
<param name="expect">期望的角度</param>
|
||||
<param name="offset">允许的偏差</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Postures.Utility.IoU(Yztob.AiSports.Inferences.Things.BoundingBox,Yztob.AiSports.Inferences.Things.BoundingBox)">
|
||||
<summary>
|
||||
计算两个边界框的交并比
|
||||
</summary>
|
||||
<param name="box1">框1</param>
|
||||
<param name="box2">框2</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Yztob.AiSports.Common.Licenses.FeatureCpuPartMap">
|
||||
<summary>
|
||||
表示受权机器CPU部件特性图
|
||||
|
||||
Binary file not shown.
@ -55,6 +55,11 @@
|
||||
获取或设置自应用大小,保持同比缩放
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.WinForm.RTSPPreview.NumberDisplayed">
|
||||
<summary>
|
||||
获取或设置是否展示帧序号、帧率
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.WinForm.RTSPPreview.IsPlaying">
|
||||
<summary>
|
||||
获取当前是否正在播放
|
||||
@ -75,9 +80,14 @@
|
||||
获取当画面缩放后X轴的偏移量,即黑边大小
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.WinForm.RTSPPreview.Fps">
|
||||
<summary>
|
||||
获取或设置视频流拉取帧率
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.WinForm.RTSPPreview.OnExtracted">
|
||||
<summary>
|
||||
获取或设置抽帧响应
|
||||
获取或设置抽帧响应,处理的是未解析的原始帧
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.WinForm.RTSPPreview.OnFrameProcessing">
|
||||
@ -101,6 +111,12 @@
|
||||
<member name="M:Yztob.AiSports.Sensors.WinForm.RTSPPreview.Dispose">
|
||||
<inheritdoc />
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Sensors.WinForm.RTSPPreview.Pushing(Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer)">
|
||||
<summary>
|
||||
直接向预览器推送帧,进行预览回放
|
||||
</summary>
|
||||
<param name="frame">帧图像</param>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Sensors.WinForm.RTSPPreview.Play">
|
||||
<summary>
|
||||
启动抽帧/预览
|
||||
|
||||
Binary file not shown.
@ -218,12 +218,13 @@
|
||||
视频流解码器
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Sensors.Implement.VideoStreamDecoder.#ctor(System.String,FFmpeg.AutoGen.Abstractions.AVHWDeviceType)">
|
||||
<member name="M:Yztob.AiSports.Sensors.Implement.VideoStreamDecoder.#ctor(System.String,FFmpeg.AutoGen.Abstractions.AVHWDeviceType,System.Int32)">
|
||||
<summary>
|
||||
初始化解码器
|
||||
</summary>
|
||||
<param name="url">设备访问url</param>
|
||||
<param name="HWDeviceType">硬件设备类型</param>
|
||||
<param name="timeout">视频连接超时是间</param>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Implement.VideoStreamDecoder.CodecName">
|
||||
<summary>
|
||||
@ -307,11 +308,29 @@
|
||||
获取FFmpeg原始帧
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrame.PresentTimestamp">
|
||||
<summary>
|
||||
获取或设置帧相对流开始的展示时间戳,单位:秒
|
||||
</summary>
|
||||
<remarks>通俗的理解便是,此帧在视频的第几秒出现的</remarks>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrame.PreserveDuration">
|
||||
<summary>
|
||||
获取或设置上一帧距离这帧维持的时长
|
||||
</summary>
|
||||
<remarks>即用当帧的<see cref="P:Yztob.AiSports.Sensors.Things.VideoFrame.PresentTimestamp"/>减去上一帧的<see cref="P:Yztob.AiSports.Sensors.Things.VideoFrame.PresentTimestamp"/></remarks>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrame.Timestamp">
|
||||
<summary>
|
||||
获取或设置时间戳,从UTC:2000-01-01开始的耗秒数
|
||||
获取或设置帧提取时的系统时间戳,从UTC:2000-01-01开始的耗秒数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Sensors.Things.VideoFrame.GetTimestamp">
|
||||
<summary>
|
||||
获取当前时间戳
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Yztob.AiSports.Sensors.Things.VideoFrame.GetImageBuffer(Yztob.AiSports.Sensors.Things.ImageFormat)">
|
||||
<summary>
|
||||
将当前帧转换成指定格式图像,并返回图像缓冲区数组
|
||||
@ -359,6 +378,18 @@
|
||||
获取FFmpeg原始帧
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer.PresentTimestamp">
|
||||
<summary>
|
||||
获取或设置帧相对流开始的展示时间戳,单位:秒
|
||||
</summary>
|
||||
<remarks>通俗的理解便是,此帧在视频的第几秒出现的</remarks>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer.PreserveDuration">
|
||||
<summary>
|
||||
获取或设置上一帧距离这帧维持的时长
|
||||
</summary>
|
||||
<remarks>即用当帧的<see cref="P:Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer.PresentTimestamp"/>减去上一帧的<see cref="P:Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer.PresentTimestamp"/></remarks>
|
||||
</member>
|
||||
<member name="P:Yztob.AiSports.Sensors.Things.VideoFrameWithBuffer.Timestamp">
|
||||
<summary>
|
||||
获取或设置时间戳,从UTC:2000-01-01开始的耗秒数
|
||||
|
||||
2
src/YD_AiSportsMicrospace/FrmMain.Designer.cs
generated
2
src/YD_AiSportsMicrospace/FrmMain.Designer.cs
generated
@ -172,7 +172,7 @@
|
||||
host.Name = "host";
|
||||
host.Size = new Size(236, 23);
|
||||
host.TabIndex = 1;
|
||||
host.Text = "192.168.3.64";
|
||||
host.Text = "172.17.30.64";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
|
||||
@ -1,21 +1,20 @@
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Net;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
|
||||
using Yunzhi.Common;
|
||||
using Yunzhi.Logging;
|
||||
|
||||
using Yztob.AiSports.Demo.WinForm.Common;
|
||||
using Yztob.AiSports.Inferences.Abstractions;
|
||||
using Yztob.AiSports.Inferences.Implement;
|
||||
using Yztob.AiSports.Inferences.Things;
|
||||
using Yztob.AiSports.Postures.Abstractions;
|
||||
using Yztob.AiSports.Postures.Sports;
|
||||
using Yztob.AiSports.Postures.Things;
|
||||
using Yztob.AiSports.Sensors.Abstractions;
|
||||
using Yztob.AiSports.Sensors.Things;
|
||||
using Yztob.AiSports.Demo.WinForm.Common;
|
||||
|
||||
/*
|
||||
* 预览主窗体
|
||||
@ -38,6 +37,7 @@ public partial class FrmMain : Form
|
||||
private readonly List<SportDescriptor> _sports;
|
||||
private SportBase _sport;
|
||||
private readonly SportDetectionQueue _detectQueue;
|
||||
private ApparatusLongJumpDelineation _measureApparatus;
|
||||
#endregion
|
||||
|
||||
#region 构造方法
|
||||
@ -74,8 +74,8 @@ public partial class FrmMain : Form
|
||||
this.sportTimes.Text = _sport.GetFormatTimes();//ts.ToString(@"mm\'ss\""");
|
||||
|
||||
//触发停止
|
||||
//if (!this._sport.IsCounting)
|
||||
// this.startOrStop_Click(null, null);
|
||||
if (!this._sport.IsCounting)
|
||||
this.startOrStop_Click(null, null);
|
||||
});
|
||||
//VoiceBroadcast.PlayTick();
|
||||
}
|
||||
@ -87,6 +87,12 @@ public partial class FrmMain : Form
|
||||
if (_sport?.IsCounting == true)
|
||||
sport.Start();
|
||||
|
||||
_measureApparatus = new ApparatusLongJumpDelineation();
|
||||
_measureApparatus.MeasureLength = 300;
|
||||
var _isCalibrated = this.ReactangleCalibrating(1920, 1080);
|
||||
|
||||
sport.MeasureApparatus = _measureApparatus;
|
||||
|
||||
_sport?.Stop();
|
||||
_detectQueue.Stop();
|
||||
_sport = sport;
|
||||
@ -127,8 +133,61 @@ public partial class FrmMain : Form
|
||||
Debug.WriteLine(ex.ToString());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private bool ReactangleCalibrating(int frameWidth, int frameHeight)
|
||||
{
|
||||
var boxes = new List<BoundingBox>()
|
||||
{
|
||||
new BoundingBox(){
|
||||
ImageWidth = frameWidth,
|
||||
ImageHeight = frameHeight,
|
||||
Label = new PredictionLabel(){
|
||||
Key = "begin"
|
||||
},
|
||||
MaskLayer = new MaskLayer(){
|
||||
Contours = new List<SixLabors.ImageSharp.PointF>(){
|
||||
new SixLabors.ImageSharp.PointF(1722, 909),
|
||||
new SixLabors.ImageSharp.PointF(1689, 724),
|
||||
}
|
||||
}
|
||||
},
|
||||
new BoundingBox(){
|
||||
ImageWidth = frameWidth,
|
||||
ImageHeight = frameHeight,
|
||||
Label = new PredictionLabel{
|
||||
Key = "end"
|
||||
},
|
||||
MaskLayer = new MaskLayer(){
|
||||
Contours = new List<SixLabors.ImageSharp.PointF>(){
|
||||
new SixLabors.ImageSharp.PointF(1516, 918),
|
||||
new SixLabors.ImageSharp.PointF(1498, 730)
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
boxes[1].Label.Key = "take-off";
|
||||
boxes.Add(new BoundingBox()
|
||||
{
|
||||
ImageWidth = frameWidth,
|
||||
ImageHeight = frameHeight,
|
||||
Label = new PredictionLabel
|
||||
{
|
||||
Key = "end"
|
||||
},
|
||||
MaskLayer = new MaskLayer()
|
||||
{
|
||||
Contours = new List<SixLabors.ImageSharp.PointF>(){
|
||||
new SixLabors.ImageSharp.PointF(191, 918),
|
||||
new SixLabors.ImageSharp.PointF(245, 741)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return _measureApparatus.Calibrating(boxes);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 事件处理程序
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user