- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻求有关 Kinect v2 SDK 中的 MultiSourceFrameArrived 事件的帮助。
下面是有问题的方法:
private async void _reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
MultiSourceFrame multiSourceFrame = e.FrameReference.AcquireFrame();
using (var colorFrame = multiSourceFrame.ColorFrameReference.AcquireFrame())
{
if (colorFrame != null)
{
_writeableBitmap.Lock();
colorFrame.CopyConvertedFrameDataToIntPtr(
_writeableBitmap.BackBuffer,
(uint)(_colorFrameDescription.Width * _colorFrameDescription.Height * _colorFrameDescription.BytesPerPixel),
ColorImageFormat.Bgra);
_writeableBitmap.AddDirtyRect(new Int32Rect(0, 0, _writeableBitmap.PixelWidth, _writeableBitmap.PixelHeight));
_writeableBitmap.Unlock();
reflectionOverlayControl.ReflectionImageSource = _writeableBitmap;
}
}
using (var bodyFrame = multiSourceFrame.BodyFrameReference.AcquireFrame())
{
if (bodyFrame != null)
{
Body body = JointHelpers.FindClosestBody(bodyFrame);
if (body != null)
{
if (body.IsTracked)
{
Dictionary<BodyComponentType, BodyComponent> bodyComponentDictionary = BuildBodyComponentDictionary(body);
foreach (BodyComponent bodyComponent in bodyComponentDictionary.Values.OrderBy(x => x.BodyComponentType))
{
bodyComponent.Generate(_writeableBitmap, _coordinateMapper, FrameType.Color, 25);
if (!_isRunningFiltering)
{
_isRunningFiltering = true;
try
{
await Task.Run(() =>
{
bodyComponent.RunFunFiltering();
});
}
finally
{
_isRunningFiltering = false;
}
}
}
reflectionOverlayControl.UpdateValues(
bodyComponentDictionary,
GetFullBodyComponent(body));
}
}
}
}
}
现在,请允许我解释一下:
接下来是我需要帮助的地方!
方法 RunFunFiltering 是一种高度密集的处理方法,运行时会创建一个阻塞语句,卡住我的 UI。这会使我的彩色帧视频输入非常跳跃!这个 RunFunFiltering 方法需要设置 BodyComponent 类的一些属性,例如矩形应该显示的颜色、它的 ReflectionImageSource 中白色像素的数量以及使用包含在长方形。
因为这个对象现在已经完成,所有的属性都设置好了(这已经为字典中的每个 BodyComponent 完成了)我在 View 上运行一个 UpdateValues 方法,它在屏幕上显示 BodyComponent 类中有趣的东西对我来说。
在这篇文章中遵循@sstan 的一些建议:Async Await to Keep Event Firing
我加入了一个 Task.Run() block 。但是,这似乎并没有释放我的用户界面,我仍然看到一个跳动的图像。奇怪的是在那个计时器示例中,它工作得很好!我在这里有点不知所措,不知道该怎么做。
我是异步函数的初学者,但我真的很想了解您的解决方案。如果您能提供有关代码的解释,我将不胜感激!
更新
我已经能够确定获取框架的 using 语句在放置在 Task.Run 调用之外时会阻塞 UI。
我不能只是让整个 BodyFrame using block 异步运行,因为我需要第一个“生成”函数始终发生,而不是繁重的处理线程的一部分。两个 using block 似乎不雅,而是把我的问题推到地毯下......
最佳答案
从您的评论中我了解到以下内容:
.
Task taskFunFiltering = null;
private async Task ProcessFrame(...)
{ // a new frame is arrived
DoSomeProcessing(...);
// only start a new run fun filtering if previous one is finished
if (taskFunFiltering == null || taskFunFiltering.IsCompleted)
{ // start a new fun filtering
// don't wait for the result
taskFunFiltering = Task.Run( () => ...);
}
}
private async Task RunFunFiltering(...)
{
// do the filtering and wait until finished
var filterResult = await DoFiltering(...);
DisplayResult(filterResult);
}
关于c# - Kinect 框架异步到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074055/
我在这里有点困惑。 Kinect 如何计算深度 : 我的理解是 IR 投影仪抛出一个图案,该图案被 IR 摄像机反射回来并读取。 现在红外摄像机知道特定深度的模式。利用传入模式和已知模式之间的差异来计
我希望使用 Kinect ToF 相机进行编程,但是我不确定这样做的硬件和软件要求。我遇到了一些涵盖这个主题的文章/书籍,但似乎有一些不一致的地方让我有些困惑。 问题 我需要购买什么 Kinect 产
我正在探索 kinect 的开发,希望能够识别手指而不是整只手。 kinect 官方 SDK 的骨骼 API 只有手关节 - 没有手指跟踪的规定。我还了解到,最近微软在新的 SDK 中包含了抓握识别
我正在探索 kinect 的开发,希望能够识别手指而不是整只手。 kinect 官方 SDK 的骨骼 API 只有手关节 - 没有手指跟踪的规定。我还了解到,最近微软在新的 SDK 中包含了抓握识别
这个问题与 Kaggle/CHALEARN 手势识别挑战有关。 您将获得大量匹配 RGB 和深度视频的训练集,这些视频是从 Kinect 录制的。我想在这些视频上使用 Kinect SDK 的骨骼跟踪
我希望我的几个开发人员立即开始使用 Kinect SDK,而且时间紧迫。因为他们不在美国,所以我需要花太多时间为他们购买 Kinect 以及在 PC 上使用它所需的电缆。 有没有一种方法可以让他们在没
我正在尝试使用 Xbox 360 的 Kinect 开发一个有趣的人脸识别应用程序。我想知道应该使用哪个 SDK 和 Visual Studio 版本才能最好地访问 Kinect。 最佳答案 Is K
我正在尝试创建一个应用程序来放大和缩小图像并通过 Kinect 旋转图像。到目前为止,它适用于任何一种情况。我想要的是,如果我旋转了图像,则在缩放时会保存新值,因此我会放大已旋转 X 度的图像。我现在
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 9年前关闭
我正在研究一种扩展方法,将一个骨架移动到 kinect 字段 os View 中的所需位置。 我的代码接收要移动的骨骼和命运位置,我计算接收到的骨骼臀部中心与命运位置之间的距离以找到how much
给定从 Kinect 深度图获得的两个连续 3D 点云 1 和 2(不是整个云,比如说使用 OpenCV 的 GoodFeaturesToMatch 从云中选择的 100 个点),我想从 1 到 2
任何人都可以使用 Raspberry Pi 从 Kinect 获取相机数据吗? 我们想制作一个无线 Kinect 使用以太网或 WiFi 连接它。否则,请告诉我您是否有可行的替代方案。 最佳答案 要回
例如,我站在 Kinect 前面。 Kinect 可以识别关节,并将它们作为数据结构公开。到目前为止我已经很清楚了。 那么,我们能否将高度定义为头关节 - ((LeftAnkle + RightAnk
我尝试将从 Kinect 接收的图像保存为 png。我从包装中取出了一个 kinect 样本,它在两个平面上显示了深度和颜色图片,我对它们进行了修改。我尝试了不同的方法,例如直接保存 color32
kinect 真的很新。我正在尝试阅读我找到的 Material 。我找到了技术规范和 .net API 文档,但可以弄清楚我正在尝试做的事情是否可行: 我可以指示 kinect 物理移动相机吗? (
据说 Microsoft SDK 可以访问 Kinect 的内在参数,但有人知道它返回的深度图像是否实际上是不失真的吗?我找不到任何相关内容。 如果我脱离主题,请告诉我,尽管我认为这是一个隐式编程问题
由于传感器之间存在红外干扰,因此使用多个 Kinect v1 传感器非常困难。 根据我读到的内容 this gamastura article ,微软通过 Kinect v2 传感器测量深度的飞行时间
我只是对 Kinect v2 的主动红外图像和深度图像之间的差异理解感到困惑。谁能告诉我主动红外图像与深度图像相比有什么特殊功能? 最佳答案 在深度图像中,像素的值与通过飞行时间测量的距相机的距离相关
我可以从 Kinect 获取深度帧,然后修改帧中的数据。 现在我想使用修改后的深度帧来获取骨架数据。 我该怎么做? 最佳答案 好吧,我发现使用 microsoft kinect sdks 无法做到这一
This programming guide暗示这是可能的,所以我想知道到底是什么。 但是,现在它不起作用。 主机操作系统为 Vista 64 位,VMWare Workstation 6.5.3 运
我是一名优秀的程序员,十分优秀!