OpenNI 人體骨架的網頁方案:webNI


Heresy 自己玩 OpenNI、從 OpenNI 1.x 開始、到現在的 2.x,算是玩滿久的了~不過由於主要是工作上在用,所以在公開的東西的部分,除了課程教材的範例程式(OpenNI 1OpenNI 2)外,似乎就只有之前的 DxOpenNI for OpenNI 2 了。而 Heresy 自己也一直有想要寫一些可以公開的程式,所以就弄出了這個「webNI」。

webNI 基本上的概念,大致上是:

建立一個 webNI Server,和網頁透過 HTML5 的 WebSocket 這個技術(維基百科)來連線、存取 OpenNI、NiTE 所分析的出來的人體骨架;如此一來,網頁上就也可以使用 Microsoft Kinect 或 ASUS Xtion 這類感應器的功能了。

而實際上,由於 WebSocket 是一個開放的標準,所以除了網頁之外,其他架構的程式,也可以一樣透過 WebSocket 來存取本地/遠端的 webNI Server,來讀取人體骨架資料。

下面,就算是一個很簡單的展示影片:

影片中,就是透過瀏覽器,來顯示人體骨架的結果了。


Heresy 目前是以開放原始碼的形式、把 webNI 放在 GitHub 上,網址是:

https://github.com/KHeresy/webNI

裡面主要是包括了:

  • webNIServer

    使用 C++ 開發的 webNI Server,讓 client 端可以透過 WebSocket 連近來、讀取 NiTE 的資料。
    由於使用的都是跨平台的函式庫,所以理論上也可以在各種平台上建置、執行。

  • Binary

    預先編譯好的 webNIServer 執行檔,目前僅提供 win32 的版本。

  • webNI.js

    把透過 WebSocket 和 webNIServer 溝通的部分包成一個 JavaScript 的函式庫,希望可以更方便使用。

  • TestWeb

    測試用的網頁 client 端。

如果是想要玩看看的話,可以先執行 Binary 資寮夾內的 webNISerevr.exe,在 OpenNI 2 和 NiTE 2 可以正常運作的環境下,這樣就可以開啟 Kinect 或 Xtion,建立一個 webNI 的 WebSocket Server 了~而接下來,只要到 TestWeb 裡面,開啟 SkeletonCanvas.html 這個網頁,按下「connect」,應該就可以了~而目前的版本,只有支援人體骨架,所以必須要走到感應器前面,讓感應器抓到人的骨架才會有畫面。

另外,這隻程式也支援開啟 ONI 檔來使用,要使用的話,只要以「webNIServer -F test.oni」這樣的形式指定檔案就可以了。其他更完整的使用說明,以後會慢慢補上。

不過,由於 WebSocket 算是比較新的技術,所以有的瀏覽器可能沒有支援。以主流瀏覽器來說,也都要較新的版本,才可以使用;像是微軟的 Internet Explorer 的話,就必須要更新到 10.0 才行;Chrome 和 FireFox 則只要不要太舊,應該也不會有問題。

由於 Heresy 是使用 Visual C++ 2012 建置的,所以要執行的話,可能會需要安裝「Visual Studio 2012 Update 1 的 Visual C++ 可轉散發套件」;請連到微軟官網後,點選「vcredist_x86.exe」下載、安裝。

而如果想要自己建置 webNI Server 的話,除了 OpenNI 2、NiTE 2 和 Heresy 放在 GitHub 上的原始碼外,還需要自行準備 Boost C++ Libraries官網)以及 WebSocket++官網)這兩套同樣是開放原始碼的函式庫。而以 VisualStudio 來說,也請隨便找個純文字編輯器開啟「\webNIServer\PathSetting.props」這個檔案(內容是 XML 的格式),修改裡面的「BOOST_INCLUDE」、「BOOST_LIB」、「BOOST_LIB64」、「WEBSOCKETPP_INCLUDE」的路徑,讓 Visual C++ 可以找到需要的函式庫。

由於所使用的函式庫都是跨平台的,Heresy 自己也都是盡量使用標準語法,所以雖然 Heresy 只有在 Windows + Visual C++ 2012 上策是,但是只要是有支援 C++11 的環境,應該都可以正確地建置、執行。Heresy 自己也有提供一個 Linux 環境下的 Makefile,只要做好路徑的修改,應該是可以正確建置出來的。

而也由於這個專案也還在很初期的階段,目前也還在測試階段,所有東西也都還沒確定,如果有什麼建議、意見、問題,也都歡迎提出。之後也會陸續補上各種功能、以及對應的文件,盡量讓它完整了~

對「OpenNI 人體骨架的網頁方案:webNI」的想法

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料