我正在阅读"如何让孩子们参与编程"的答案,微软Kinect因缺席而引人注目.然而,"Kinect for Windows" 主页确实谈到了使用它来教育学生.
据推测,API仍在不断发展并且相对复杂 - 但是让年轻观众(例如10-15岁)使用该技术是多么可行?我问,因为我认为来自传感器的物理反馈回路对于儿童编程来说将是一个非常类似Mindstorms的体验.
有关于让孩子们使用Kinect的书籍,软件"培训轮"或在线资源吗?
我正在尝试为Java应用程序编写插件。该插件应该能够告诉Java应用程序已经识别出新事件(观察者设计模式,轮询...但这不是重点)。问题在于事件是来自Microsoft Kinect控制器的跟踪手势(我必须使用C ++和Microsoft Kinect SDK,因为我必须这样做)。因此,这意味着我必须在Java应用程序和Kinect应用程序之间进行通信。我想到了类似适配器设计模式的东西,其中Java应用程序“包含”了接口(C ++头文件,dll等)。首先,我想到了JNI,但随后我必须编写一个将在应用程序两面都使用的DLL,对吗?我想到的另一件事是通过UDP等协议(或更轻巧的协议)提供手势数据。
JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION
Run Code Online (Sandbox Code Playgroud) 我计划购买 Windows 版 Kinect,因为我要与一位朋友一起制作一个学校项目。我的问题很简单——我可以用 Kinect 录制一些手势的视频然后发送给他,因为他买不到 Kinect。他是否能够加载视频并在运行时使用它,就像来自 kinect 的流一样,以便我们俩都可以处理该项目。该项目将用 C# 编写,可能使用 Microsoft 的 Kinect SDK,如果需要的话还可以使用 OpenCV 或 OpenNI。
我想将kinect(抱歉)连接到PC,以便用户可以通过手势与我的webapp进行交互.我没有清楚地了解为实现这一目标所涉及的编程级别,但JavaScript API将是理想的(Java也是可以容忍的).
我看过DepthJS,但单独安装/设置几乎打败了我.至少我需要用户能够移动光标并单击,但理想情况下我也希望他们能够使用智能手势,如捏.
是否有可用的API提供这些功能,可以相对容易地安装/设置,并且可以使用JavaScript进行编程?我不知道这是否有任何区别,但我将在Ubuntu上进行开发.
我从Kinect输出的图像中选择了4个点,因此每个点都有其(x, y, z)坐标.
我的目标是确定4点是否落在同一平面上.
这是我的功能:
public bool isValidPlane()
{
for (int i = 0; i < edgesPoints.Length; i++)
{
double absPlaneEquation = Math.Abs(distance -
(normal.X * edgesPoints[i].X + normal.Y * edgesPoints[i].Y + normal.Z * edgesPoints[i].Z));
if (absPlaneEquation > 1500) /* 1500 is a tolerance error*/
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这normal也是法线(平面上2个向量的交叉乘积,之前已经从4个选定点中的3个计算得到)到平面并且它被标准化:
private void calcPlaneNormalVector()
{
if (lastEdgeNumber < 3)
{
return;
}
Vector3D vec1 = new Vector3D(edgesPoints[0], edgesPoints[1]);
Vector3D vec2 = new Vector3D(edgesPoints[0], …Run Code Online (Sandbox Code Playgroud) 我想将来自设备的未压缩帧存储为视频,但我需要知道如何选择“全帧(未压缩)”作为 VideoWriter(在 emgu aka openCV 中)的编解码器。
当我像这样传递 -1 时,我可以从下拉菜单中选择它
VideoWriter myVideoWriter = new VideoWriter ("myVieoColor.avi", -1 , 15, videoSize, true);
Run Code Online (Sandbox Code Playgroud)
但我想自动选择全帧(未压缩)编解码器。例如,我知道我可以通过以下方式选择 Lagarith Lossless Video Codec
VideoWriter myVideoWriter = new VideoWriter ("myVieoColor.avi", Emgu.CV.VideoWriter.Fourcc('L','A','G','S') , 15, videoSize, true);
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚我需要使用哪个fourcc。
也许有人可以帮助我
我正在使用用户跟踪:我已经注册了回调(User_NewUser,User_LostUser,Pose_Detected,Calibration_Start,Calibration_End).当我进入传感器区域时,我以正确的方式检测和校准.但是当我离开传感器区域(并且没有其他人在里面)时,我希望程序调用回调"User_LostUser",但似乎没有这样做.(事实上,当我再次进入时,传感器仍然跟踪我!)我希望当用户离开场景时,程序取消注册/删除他并重新启动以检查新用户:有人可以帮助我吗?
void XN_CALLBACK_TYPE User_LostUser(xn::UserGenerator& generator, XnUserID nId,
void* pCookie) {
generator.GetPoseDetectionCap().StopPoseDetection(nId);
generator.GetPoseDetectionCap().Release();
generator.GetPoseDetectionCap().StartPoseDetection("Psi", nId);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究android sdk和kinect sdk上的双重应用程序.我希望能够将kinect发送数据发送到智能手机应用程序.然后,智能手机应用程序将根据kinect数据向用户发出通知.智能手机应该能够(希望)打开/关闭kinect以及其他一些基本命令.如何让kinect和智能手机应用程序进行通信?
我基本上要做的是使用C#和Kinect SDK(完成)将kinect骨架框架数据(关节位置)写入文件,然后在外部处理(完成),然后将数据读回我的应用程序(完成)并逐帧绘制数据作为光点步行者(骨架关节),所以我看到一个动画.(问题)
我的问题是:如何使用C#(及其DrawingContext类)绘制这个30fps的动画?
我想使用DrawingContext,因为我在录制时已经将它用于SkeletonFrames的实时输出.它就像这样完成,类似于"Skeleton Basics"SDK示例:
this.sensor.SkeletonFrameReady += this.SensorSkeletonFrameReady;
...
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
...
using (DrawingContext dc = this.drawingGroup.Open())
{
...
dc.DrawEllipse(drawBrush, null, 2Dpoint, JointThickness, JointThickness);
}
}
Run Code Online (Sandbox Code Playgroud)
所以kinect为我提供了大约的框架.30fps使用事件,我只是绘制数据.
但是,如果没有kinect但是从文件/内存中读取数据,我该如何绘制?(目前使用2DArray [Frame,Joint])
我想过让一个线程以30fps的速度运行(使用sleep来实现帧率)然后发送一个类似的事件或者直接绘制..但是我试图让这个工作完全失败了.例如,我没有将事件发送到主线程进行绘制.
问题可能是我缺乏对C#的理解(我对它完全陌生)......
关于我如何设置和工作的任何提示?
所以我知道这个问题之前已经完成,但大部分时间它仍然是在OpenNI和Libfreenect被淘汰的时候.我的问题是:
1)我想知道现在的状态.2)这两者之间的差异(优点,缺点和其他)3)特别是对于骨架跟踪,这是更好的并提供更多关于骨架的数据(例如在Microsoft SDK中它们为20个关节提供数据,它是否相同这两个,更多,更少?)