Kinect的軟體開發方案 OpenNI簡介

2021-08-25 18:25:04 字數 2085 閱讀 7927

之前已經介紹過了微軟給 xbox 360 用的體感輸入裝置 kinect 了;後來也陸續介紹了怎麼樣在 windows 上,透過 openni 來使用 kinect 作一些應用(文章

一、文章二)。

而接下來則是準備往技術面,來介紹一下,要怎麼樣用 c++ 來使用 openni 了~不過這一篇,則是在進入到程式的部分前,先大概介紹一下 openni 這個 framework 的基本架構了。

openni 簡介

首先,什麼是 openni?他是「open natural interaction」的縮寫,大致上可以翻譯為「開放式自然操作」;而所謂的 ni 又包含哪些東西呢?openni 對自然操作(natural interaction,以下簡稱 ni)的定義包含了「語音」、「手勢」、「身體動作」等等,基本上就是比較直覺、操作者身上不需要其他特殊裝置的操作方式了。

openni 本身則是定義了撰寫自然操作程式所需要的 api,提供乙個多語言(主要是 c/c++)、跨平台的 framework;藉此提供了乙個標準的介面,讓程式開發者要使用視覺、聲音相關感應器,以及對於這些資料、分析的中介軟體(middleware)時,可以更為方便。

下方則是 openni 的基本架構圖:

而中間這層就是 openni 的部分,他除了負責和硬體的溝通外,也在自身內部預留了加上中介軟體(middleware)的空間,可以用來做手勢辨識、或是追蹤之類的處理。openni 目前在 middleware 的部分,定義了下面四種元件:

目前 primesense 也已經提供了一套 nite 當作最主要的 middleware、提供上面所列的功能;而如果有更高階的需求的話,應該也可以自己寫一套相容於 openni 的 middleware 來使用。當然,也希望以後會有其他軟體廠商投入這塊來開發了。

節點(node)

在 openni 裡,他定義了所謂的「production node」來代表內部的基本單元,包括了硬體部分的感應器,以及 openni 所提供的功能;這些 production node 分為下面三大類/層:

感應器相關(sensor related)production nodes

中介軟體相關(middleware related)production nodes

錄製/撥放

上面這些 production node 基本上都是會由不同的模組各自實作的。像是以感應器相關的部分,就是會由 openni 相容的裝置提供,以目前來說,主要就是 kinect 的驅動程式會提供這深度、影像產生的功能。而中介軟體相關的部分,則是由不同的 middleware 各自提供;不過目前的來源應該也只有 nite 就是了。

在層級上,感應器相關的 production node 算是最底層的,由於去直接訪問裝置的資料,所以應用程式可以直接使用這類的 production node。而中介軟體相關的 production node 由於是靠感應器的資料來做處理的,所以他們的層級則比感應器的高一層、必須要在有感應器相關的 production node 的情況下才可以使用。

而在有了上面的這些 production node 後,就可以透過組合這些節點來建立所謂的「production chain」,並以此進行資料的處理流程。比如說要產生使用者的資料的話,就是會透過「使用者產生器」(user generator)去訪問更低層的「深度產生器」(depth generator);而這樣的乙個節點序列,就是所謂的「production chain」。

能力(capability)

openni 的「capability」機制是用來增強中介軟體和硬體裝置的彈性的;這些不同的能力都是非必要性的,各家廠商所提供的不同的中介軟體和裝置,可以自己決定要提供那些能力。而 openni 則是負責定義好一些可以使用的 capability,讓程式開發者可以快速地找到符合自己需求的中介軟體或裝置。

而目前版本的 openni 所支援的 capability 則如下:

基本上,這些 capability 許多都是只針對特定的 production node 才會有的(例如 skeleton 就只有 user 這類的 node 可能有);而至於那些 production node 有哪些 capability 呢,就是要看更細一部的資料才會知道了~

參考資料:《openni user guide》

軟體開發解決方案

此方法適合企業需求明確,或者二次開發時使用 1.定義階段1.1軟體計畫 1.2需求分析2.開發階段2.1軟體設計 2.2程式編碼 2.3軟體測試3.維護階段3.1執行維護此方法適合客戶需求不明確,核心在於給客戶寫小樣並多次修改小樣以獲得明確需求,不要擔心小樣耽誤時間,因為後期該需求所耗費的時間遠遠大...

自上而下的軟體開發和自下而上的軟體開發

自上而下 top down 開發模式是指從乙個應用的最高點開始開發。從最高點逐步往下層編碼,直到開發完所有的任務。一旦寫完了最下層的 開發任務就完成了。使用這種方式,你需要設計 編寫出所有你需要的但還沒有實現模擬介面 服務 偽 自下而上 bottom up 開發模式是指從乙個應用的最底層開始開發。這...

python軟體開發目錄 軟體開發目錄規範

為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要。軟體的目錄規範並無硬性標準,只要清晰可讀即可,假設你的軟體名為foo,筆者推薦目錄結構如下 foo core 存放業務邏輯相關 core.py api 存放介面檔案,介面主要用於為業務邏輯提供資料操作。ap...