我有适用于Windows和MacOSX的Kinect和驱动程序.是否有任何使用OpenCV API从Kinect流式传输的手势识别示例?我试图在Xbox Kinect上实现类似于DaVinci原型,但在Windows和MacOSX中.
我目前正在为我的大学研究项目.目标是使用Microsoft Kinect摄像头控制Mac.另一名学生正在编写Kinect驱动程序(它将安装在Mac后面的天花板或墙壁上的某个位置,并在Macs屏幕上输出所有手指的位置).
我有责任使用手指位置并对它们做出反应.目标是使用一根手指控制鼠标,并以同样的方式对多个手指做出反应,就像它们在触控板上一样.
我认为这将是简单而直接的,但事实并非如此.实际上很容易用一根手指控制鼠标光标(使用CGEvent),但不幸的是,没有用于创建和发布Multitouch-Gestures到系统的公共API.
我已经做了很多研究,包括在最低位置使用事件点击捕获所有CGEvents并尝试反汇编它们,但到目前为止还没有真正的进展.
比我偶然发现并意识到,即使是事件点击的最低位置也不够深入: 扩展Magic Mouse的功能:我需要一个kext吗?
当我做对了,内置的Trackpad(以及MagicMouse和MagicTrackpad)通过KEXT-Kernel-Extension与私有MultitouchSupport框架进行通信,该框架生成并以某种方式将传入数据发布到操作系统.
因此,我需要使用MultitouchSupport.framework中的私有API来执行与触控板相同的操作,对吧?或者我需要写一个KEXT-Extension?
如果我需要使用MultitouchSupport框架:我如何反汇编它以获得私有API?(我知道类转储,但这只适用于Objective-C-frameworks,而这个框架不是)
非常感谢您的回复!NexD.
我正在尝试裁剪视频RGB的矩形区域.首先我找到了头部关节的坐标,并且在这个坐标上我在RGB视频上画了一个矩形.现在我想在另一个视频中显示第一张图片中租金角内的图像.任何帮助都会很棒.
视频RGB显示在"RGBvideo"图像控件中.裁剪图像我想在"faceImage"图像控件中显示
我在线搜索但无法找到解决方案.我很困惑.
非常感谢
我在Microsoft Visual Studio 2010中创建了一个Kinect应用程序.我需要创建一个可以在任何基于Windows的系统上运行的应用程序的exe.如果我需要这样做,那么系统应该满足哪些要求?如果是,那我该怎么做?
我试图通过在另一个文件夹中复制它来在application/bin/debug/application.exe中使用exe但它显示错误但是如果我从bin/debug/application.exe运行exe它就可以了.我在这里遗漏了什么,或者这是唯一的方法吗?
您好我正在尝试做一些图像处理.我使用Microsoft Kinect来检测房间里的人.我得到深度数据,做一些背景减法工作,最后得到一个像这样的视频序列当一个人进入场景并走动时:
我放了一个视频,以便您可以看到视频中噪音的行为.不同的颜色代表不同的深度.白色代表空.你可以看到它很嘈杂,尤其是红色噪音.
我需要尽可能地摆脱除人类以外的一切.当我进行侵蚀/扩张(使用非常大的窗口大小)时,我可以摆脱很多噪音,但我想知道是否还有其他方法可以使用.特别是视频中的红噪声很难通过侵蚀/扩张来消除.
一些说明:
1)如果我们知道场景中没有人,但我们所做的背景减法是完全自动的,即使场景中有人,甚至当相机移动等时,也可以进行更好的背景减法.这是我们现在可以得到的最好的背景减法.
2)该算法将在嵌入式系统上实时工作.因此,算法越有效,越容易.而且它不一定是完美的.虽然也欢迎复杂的信号处理技术(也许我们可能会在另一个不需要嵌入式实时处理的项目中使用它们).
3)我不需要实际的代码.只是想法.
在我的代码中,我从字节数组(依次从Kinect)接收WriteableBitmaps,我想把它们变成用于EmguCV的位图.目前这是我的代码:
// Copy the pixel data from the image to a temporary array
colorFrame.CopyPixelDataTo(this.colorPixels);
// Write the pixel data into our bitmap
this.colorBitmap.WritePixels(
new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
this.colorPixels,
this.colorBitmap.PixelWidth * colorFrame.BytesPerPixel,
0);
BitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(colorBitmap));
MemoryStream ms = new MemoryStream();
encoder.Save(ms);
Bitmap b=new Bitmap(ms);
Image<Gray, Byte> img = new Image<Gray, Byte>(b);
img = img.ThresholdBinary(new Gray(200), new Gray(255));
Run Code Online (Sandbox Code Playgroud)
我从这里得到了代码的下半部分.代码编译和所有内容,但是在我尝试运行程序时挂起(它应该对图像执行一些操作然后将其转换回可以呈现的格式作为一个图像.)暂停我的代码,然后在VS 2013中使用IntelliTrace,我在Image<Gray, Byte> img = new Image<Gray, Byte>(b);"A System.ArgumentException被抛出时得到以下异常:不支持URI格式." 使用替代代码,从我直接从字节到位图的位置给出了同样的错误.(代码可以在这里找到.)
任何人都有关于如何解决此错误或其他方法转换为位图的提示?我是C#和EmguCV的新手,我非常感激.
我正在编写一个使用Kinect照片数据的应用程序,并在F#中将两个帧相互比较.我正在使用Rob Miles 学习Kinect Api第74页作为指南,但我没有使用指针,性能正在受到影响.Kinect帧的字节为1,228,800字节.我写了这样的比较:
member this.differenceCount(currentImageBytes) =
if previousImageBytes |> Seq.length = 0 then
previousImageBytes <- currentImageBytes
0
else
let bytes = Seq.zip previousImageBytes currentImageBytes
let differenceCount = bytes |> Seq.mapi(fun i e -> i, e)
|> Seq.filter(fun (i,e) -> i % 4 <> 0 )
|> Seq.map snd
|> Seq.filter(fun (p,c) -> p <> c)
|> Seq.length
previousImageBytes <- currentImageBytes
differenceCount
Run Code Online (Sandbox Code Playgroud)
当我运行它时,屏幕滞后,因为(我认为)处理数组需要很长时间.此外,错误率接近50%.
1)我接近问题了吗?2)有没有办法优化我的代码以加快速度?
我目前正在学习本教程
http://channel9.msdn.com/Series/KinectQuickstart/Setting-up-your-Development-Environment
但在9点50分左右,他使用了一个名为KinectSensorChooser组成部分,因为我读微软的SDK历史记录,各国这不再是不可用在最新的SDK 1.6版本
"我们已经采取KinectSensorChooser,原WpfViewers的一部分,拆分逻辑和用户界面分为两个不同类别:KinectSensorChooser和KinectSensorChooserUI在Microsoft.Kinect.Toolkit.dll KinectSensorChooser可以在非WPF场景中使用,因为它不仅是逻辑,没有用户界面."
资料来源:http://www.windows7download.com/win7-kinect-sdk/history-lxqvgakz.html
由于Microsoft.Kinect不包括KinectSensorChooser分量i添加Microsoft.Kinect.Toolkit可重复使用的部件,其不包括所述KinectSensorChooser但是组件没有显示在工具箱起来,我试图工具箱上并选择手动添加它通过右击选择项目,然后WPF组件则定位,但它进口的UI(KinectSensorChooserUI),如果我把它拖到组件从工具箱中消失的形式,我使用的Visual Studio 2012旗舰版的Windows 8
我目前正在开发一个应用程序,其初始目标是实时获取Kinect设备"看到"的环境的3D模型.此信息稍后将用于投影映射,但目前这不是问题.
需要克服几个挑战,即Kinect将安装在移动平台(机器人)上,并且模型生成必须是实时的(或接近它).
经过对该主题的长期研究,我想出了几种可能的(?)架构:
1)使用从Kinect获得的深度数据,将其转换为点云(使用PCL执行此步骤),然后将其转换为网格,然后将其导出到Unity中以进行进一步的工作.
2)使用从Kinect获得的深度数据,将其转换为点云(使用PCL执行此步骤),将其导出到Unity中,然后将其转换为网格.
3)使用已经可以选择创建Mesh模型的KinectFusion,并(以某种方式)自动加载创建到Unity中的Mesh模型.
4)使用OpenNI + ZDK(+包装器)获取深度图并使用Unity生成网格.
老实说,我有点迷失在这里,我的主要问题是实时要求以及被迫集成几个软件组件使这成为棘手的问题.我不知道这些解决方案中是否存在哪些解决方案是可行的,并且关于这些问题的信息/教程并不完全丰富,例如,对于Skeleton跟踪.
任何形式的帮助将不胜感激.
此致,努诺