之前在 OpenNI 1 的時候,有一套名為 FAAST 的軟體,可以把人體的全身動作,對應成 Windows 的鍵盤滑鼠訊號,讓使用者可以透過肢體動作,來完成電腦的操作(請參考《用 FAAST 把 Kinect 當 Windows 鍵盤用!》);不過感覺上,該團隊似乎停止開發了,所以當 OpenNI 改版到 OpenNI 2 之後,FAAST 也不能用了。
不過現在,又有一套名為「HandGKET」(Hand Gesture Key Emulation Toolkit)的軟體,可以透過 OpenNI 2 做到類似的事情了~
它的官方網站是:https://sites.google.com/site/kinectapps/handgket。
下面則是官方的展示影片:
如果想玩的話,可以在該頁面最下方,找到檔案的下載;只要點選「HandGKET_v0.9.2(Distribution).zip」這個檔案右方的向下箭頭,就可以下載此程式的壓縮檔了。而解壓縮後,裡面有兩個資料夾,分別是 32 位元和 64 位元的版本,可以視需要使用。而另一個「HandGKET_manual.pdf」的檔案,則是這套軟體的使用說明,建議也下載來看看。
由於他是基於 OpenNI 2 和 NiTE 2 來開發的,所以要使用的話,可能會需要安裝 OpenNI 2 和 NiTE 2(不過實際上他有附上對應的 dll,理論上只要有驅動程式應該可以不用裝);而如果是使用 Microsoft Kinect 感應器的話,則需要安裝 Kinect for Windows SDK 或 Kinect for Windows Runtime(連結),才能正常使用。
而由於此程式沒有用來做設定的圖形介面,所以所有的設定,都是要靠一個純文字檔來完成;詳細的設定說明,請參考官方的文件。
和 FAAST 使針對全身骨架來做處理不一樣,HandGKET 只有針對手的位置來做處理,所有的鍵盤滑鼠對應,都是靠雙手來觸發的。
HandGKET 使用上分為「單手模式」和「雙手模式」兩種;「單手模式」可以用來對應鍵盤和滑鼠,「雙手模式」則只能對應鍵盤。而由 HandGKET 應該是使用 NiTE2 來做手的追蹤的,所以在執行起來後,要先透過 NiTE 的 Wave(揮手)或 Click(往前伸再縮回)來完成手的定位。
而在程式執行中,螢幕中間應該會出現顯示目前狀態的小視窗,裡面的圖示各自代表不同的意義如下:
基本上,都是要等到綠色的手出現,才能開始進行手勢的。
在單手模式下,他支援六種手勢,代表了手往六個不同的方向移動,也就是「HAND_LEFT」、「HAND_RIGHT」、「HAND_UP」、「HAND_DOWN」、「HAND_PUSH」和「HAND_BACK」;而他的手勢的定義,就是先往其中一個方向,然後在一定的時間內、再移回原來的位置,就算是完成了一個手勢。
下圖就是程式執行後的畫面,在手的位置會有一個綠色方框(如果是滑鼠模式,會是一個圓);當手移動動的時候,他不會立刻跟著動,只要先移到別邊,在馬上移回這個方框,就算是完成一個手勢了。
每個方向也都可以設定不同的移動距離條件(TRHESHOLD),所以其實是可以根據手移動的距離,來決定要做的事情的。
在雙手模式下,他則提供了下列的十種手勢,一樣可以各自設定不同的條件,來對應到不同的鍵盤事件。
- TWO_HANDS_PUSH
- TWO_HANDS_BACK
- TWO_HANDS_UP
- TWO_HANDS_DOWN
- TWO_HANDS_OPEN
- TWO_HANDS_CLOSE
- LEFT_HAND_PUSH
- RIGHT_HAND_PUSH
- TURN_LEFT
- TURN_RIGHT
而要使用雙手模式,則是要先靠 Wave 或 click 的手勢,來讓程式能追到兩隻手,然後擺出下面的初始化姿勢、來進行接下來的操作。
而一樣,只要做出上面定義的動作,就可以送出對應的鍵盤事件了。
而在設定檔的部分,官方有提供一個「gesture_event.txt」的檔案,裡面就是範例的設定。有興趣的話,就玩看看吧~真的有需要的話,也是可以根據這個檔案、再參考文件來做修改的。
至於完整的設定教學?說實話,Heresy 可能不會下去寫了…如果有人有比較詳細的教學,也歡迎提供。
最後,下面則是用這套軟體來玩 Need for Speed 這款賽車遊戲的展示:
不好意思,想請問一下。
如何切換keyboard mode 到mouse mode?
在操作時,顯示的永遠都是方形,要如何才能顯示圓形的滑鼠模式呢QQ
讚讚
您好。
Heresy 自己並沒有認真使用這套軟體, 建議有問題可以直接詢向 HandGKET 的開發人員詢問。
讚讚
你好!
你做"用手勢控制電腦:HandGKET"很神奇!我官方網站下載,但是..我沒有[箭頭],我看你的youtube有[箭頭]耶!!謝謝
讚讚
您好。
YouTube 的影片是官方提供的示意影片,有可能他的游標是靠其他軟體加上去的。
建議有問題可以直接詢向 HandGKET 的開發人員詢問。
讚讚
請問:OpenCV加C++可以[用手勢控制電腦]嗎?!謝謝!
讚讚
技術上做得到,但是由於 OpenCV 沒有直接可以拿來馬上用的模組,所以必須要自己寫。
當然,也要看你要做到什麼程度。
讚讚
我用簡單的[滑鼠]而已!
讚讚
個人只能說,建議你先想好,你希望怎麼把動作對應到滑鼠的各項功能。
要把手勢當滑鼠用,真要做得好,一點都不簡單…
有很多地方都有可能出問題,也不會像實體滑鼠那麼準確、穩定。
參考:
OpenNI 的手部追蹤、外加簡單的滑鼠模擬
https://kheresy.wordpress.com/2011/09/14/hand_tracking_in_openni/
使用 PrimeSense NiTE 和 GrabDetector 的簡易版滑鼠模擬器
https://kheresy.wordpress.com/2013/08/22/simple-mouse-simulator-with-primesense-nite2-and-grabdetector/
OpenNI/Kinect 的手部追蹤、處理
https://kheresy.wordpress.com/2012/08/23/hand-processing-with-openni/
讚讚
好!非常感謝!
讚讚
Heresy你好~
請問我有問題?我先下載[Kinect SDK],我安裝[OpenNI-Windows-x86-2.2],我看你有[基本使用],我都用你的[基本使用]。我用你的範例程式[使用PrimeSense NiTE 和 GrabDetector 的簡易版滑鼠模擬器]!但…有一點點bug(我安裝visual studio2008寫Visual C++),bug是[語法錯誤!]!是不是沒有安裝[vcredist_x86]呢?還有你的範例程式有參數是[#include ]!我不瞭解參數?請你可以解釋?謝謝!
讚讚
不知道你是否有學過 C/C++ 的程式開發?
如果沒有,建議先學習一下 C/C++ 的基礎、以及 Visual Studio 的基本操作。
(至少先了解 include 的意義)
再者,你所提供的訊息,並沒有完整的錯誤訊息,僅有「語法錯誤」這項資訊,是無法判斷到底是什麼問題的。。
讚讚
Heresy你好:
我抱歉!實在是對C/C++程式一點點陌生,我是電機系出
生,從工作是硬體工程師。讀書時候,對C/C++學一點點!
現在是研究所研究生,對程式~我真的是[進階版]吧!!@@
因為…我的指導教授做[手勢滑鼠]!我幫助請教你程式。對
[手勢滑鼠]非常陌生。請教你怎麼樣可以開發程式進行呢?謝謝!
讚讚
Heresy 這邊只能說,如果你想要學 OpenNI、OpenCV,會建議你先把 C++ 學好一點,至少要能理解基本的語法、關鍵字的意義和用途。
另外,這邊也和你確認,Heresy 這邊收集、用手勢模擬滑鼠的方法,基本上前提都是要有深度攝影機(MS Kinect、ASUS Xtion);所以也請確認你有對應的攝影機可以用。
讚讚
你有要[深度攝影機]!哪…我只有[網路攝影機]可以嗎!?如果沒有?我去學校跟研究所學弟,再討論吧!謝謝!
讚讚
建議你先看一下 https://kheresy.wordpress.com/index_of_openni_and_kinect/ ,你就會知道為什麼要用深度攝影機了。
一般網路攝影機要做不是不行,但是你必須要從更前面的部分開始做,相對起來會複雜更多。
最後,建議你發問之前,還是先把必要的功課做一下,會比較好。
讚讚
好。謝謝!抱歉~我常常麻煩你,我沒有做功課!@@"
讚讚
Heresy你好~
請問..我用kinect做滑鼠,我都有安裝[KinectSDK-v1.7-Setup],[OpenNI- Windows-x86-2.2],[SensorKinect-v0.93]等等!但….我寫C++程式滑鼠,一直有bug是
“無法開啟包含檔案:[XnCppWrapper.h]"呢?謝謝!
讚讚
請先參考
https://kheresy.wordpress.com/2013/09/30/about-openni-2013/
如果你要用 OpenNI2 開發,也請先把這系列看一下
https://kheresy.wordpress.com/index_of_openni_and_kinect/documents-of-openni-2-x/
讚讚
好!謝謝!我先看[OpenNI2 開發]詳細看一下!^^
讚讚
Heresy你好:
我用[HandGKET]32位元安裝了,HandGKET滑鼠已經可以動作。但…Heresy你
如何可以像你的[滑鼠游標]呢?!謝謝!
讚讚
抱歉,但是完全看不懂你的問題是想問什麼。
另外,Heresy 自己已經沒有用 HandGKET 了,所以建議你研究官方文件、或是聯繫官方人員應該會比較有用。
讚讚
Heresy:
好!謝謝!
讚讚
請問只要點開HandGKET.exe就可以運作了嗎?
我把OpenNI2、NiTE等等都安裝好了,也將關於Kinect V2 有關的所有SDK都安裝好了,應該設定的去掉分號的也完成了,但點開HandGKET.exe時,數秒後即自動關閉,無法直接操作,為什麼呢?
讚讚
請確認你的感應器是哪一款。
HandGKET 是搭配 OpenNI 2 和 NiTE2 來使用的。
但是如果你是使用第二代的 Kinect 感應器的話,由於 OpenNI 沒有支援,所以是無法使用的。
而如果你是使用第一代的 Kinect 的感應器,請安裝 Kinect for Windows 1.x,他不能搭配 Kinect for Windows 2.x 使用。
讚讚