2012-05-27 15 views
1

我使用Kinect在C++(OpenGL)中創建應用程序。每當我們點擊OpenGL時,調用的函數是使用Kinect調用Open G1的鼠標功能

void myMouseFunction(int button, int state, int mouseX, int mouseY) 
{ 

} 

但是我們可以使用Kinect調用它們嗎?也許我們必須使用深度緩衝區,但是如何?

回答

4

第一:你不「點擊openGL」,因爲OpenGL不處理用戶輸入。 OpenGL純粹是一個渲染API。你所指的可能是與GLUT一起使用的回調函數; GLUT不是OpenGL的一部分,而是一個獨立的框架,它也執行一些用戶輸入事件處理。

Kinect不會生成輸入事件。 Kinect所做的是,它返回它「看到」的深度圖像。你需要以某種方式處理這個深度圖像。有像OpenNI這樣的框架可以處理這個深度圖像並將其轉換爲手勢數據或類似圖像。然後,您可以處理這些手勢數據並進一步處理,以將其解釋爲用戶輸入。

在您的標籤中,您提到了「openkinect」,這是Kinect的開源驅動程序。然而,OpenKinect不提供提取和解釋,但只提供深度圖像。您當然也可以對深度數據進行簡單的測試。例如,測試某個定義體積範圍內的某個對象,並將其解釋爲某種事件。

+0

你能給我一個在kinect中使用深度緩衝的例子嗎? – user1391118

0

我認爲你在混淆Kinect的真正用處。 Kinect向您的計算機提供深度和視頻數據,然後它們必須對其進行處理。 Openkinect只爲您做了非常少的處理 - 無骨架跟蹤。骨架跟蹤允許您爲每個用戶關節的位置進行3D表示。

如果您只是在進行一些隨機的黑客攻擊,您可能會切換到KinectSDK--只能在Windows上開發和部署。

KinectSDK也可以與OpenGL和C++一起使用,並且您可以獲得所述用戶的「骨架」。

OpenNI - 這是多平臺和自由的自由 - 也支持骨架跟蹤,但我沒有使用它,所以我不能推薦它。

在您進行了某種骨架跟蹤之後,您可以專注於用戶的手並處理他的動作以獲得「鼠標點擊」功能。雖然這不會使用GLUT的鼠標處理程序。

+0

P,深度緩衝區返回我的RGB值和保留值..沒有其他 – user1391118