使用 Kinect 调用 Open Gl 的鼠标功能
invoking the mouse function of Open Gl using Kinect
我正在使用Kinect在C++(OpenGL)中创建一个应用程序。每当我们在 OpenGL 中单击时,调用的函数都是
void myMouseFunction( int button, int state, int mouseX, int mouseY )
{
}
但是我们可以使用 Kinect 调用它们吗?也许我们必须为此使用深度缓冲区,但是如何呢?
首先:你不会"点击openGL",因为OpenGL不处理用户输入。OpenGL纯粹是一个渲染API。您所指的可能是与 GLUT 一起使用的回调;GLUT不是OpenGL的一部分,而是一个独立的框架,它也做一些用户输入事件处理。
Kinect 不会生成输入事件。Kinect所做的是,它返回它"看到"的内容的深度图像。您需要以某种方式处理此深度图像。有像OpenNI这样的框架可以处理这个深度图像并将其转换为手势数据或类似数据。然后,您可以处理此类手势数据并进一步处理,以将其解释为用户输入。
在您的标签中,您提到了"openkinect",即 Kinect 的开源驱动程序。但是,OpenKinect 不会进行手势提取和解释,而只提供深度图像。当然,您也可以对深度数据执行简单的测试。例如,测试在某个定义的体积范围内存在某个对象,并将其解释为某种事件。
我认为你混淆了Kinect的真正作用。Kinect 将深度和视频数据馈送到您的计算机,然后计算机必须对其进行处理。Openkinect只为你做非常小的处理——没有骨架跟踪。骨架跟踪允许您获取用户每个关节位置的 3D 表示。
如果你只是在做一些随机的黑客攻击,你也许可以切换到KinectSDK - 但需要注意的是,你只能在Windows上开发和部署。
KinectSDK也可以与OpenGL和C++一起使用,您可以获得所述用户的"骨架"。
OpenNI - 它是多平台的,自由自由 - 也支持骨架跟踪,但我没有使用过它,所以我不能推荐它。
在你对某种骨架进行跟踪后,你可以专注于用户的手并处理他的动作,让你的"鼠标点击"工作。不过,这不会使用 GLUT 的鼠标处理程序。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 在鼠标按下时移动 SDL2 窗口的功能闪烁窗口并且移动速度不够快
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- 如何从鼠标处理程序中调用成员功能
- 在Visual Studio 08中悬停鼠标时显示功能信息
- OpenCV中使用C++的鼠标点击功能
- 使用 Kinect 调用 Open Gl 的鼠标功能
- 使用Qt鼠标功能时'&'和'=='的区别?
- GLUT 键盘和鼠标功能只是不会被调用
- Qt:鼠标移动功能不正常
- 删除鼠标滚轮QGraphics视图上的滚动功能
- 使用 GLM 功能放大 OpenGL 中的当前鼠标位置
- Qt Creator, c++,鼠标悬停功能