不知道有多少有 Microsoft Kinect 的人,有把他接到電腦上來用?目前除了微軟自己有推出官方的「Microsoft Kinect for Windows SDK」、可以在 Windows 上驅動、並使用 Kinect 外,也還有許多更早就出現的第三方方案,可以用來在電腦上使用 Kinect;像 Heresy 現在就是使用 OpenNI 加上 SensorKinect 來在 Windows 上使用。
但是,目前這些在 Windows 上使用 Kinect 的方案,由於使用的都是特殊架構的驅動程式,所以似乎都沒有辦法直接把 Kinect 拿來當作 WebCAM 來使用?這點在某些時候,似乎還是有點不方便…
不過,這點對於一些程式強者來說,是很好克服的!像以 OpenNI 的平台來說,已經有人寫出 OpenSource 的「Kinect Virtual Camera」,可以透過 Windows 上的 DirectShow Filter 的介面,把 Kinect 封包、當作 Windows 的標準 Webcam 來用了!
Kinect Virtual Camera 的主要網站,應該是 KinectDevs 這個論壇的「Kinect Virtual Camera (Kinect Webcam)」版;而目前最新的版本是 0.8 版,可以到他的檔案下載頁面下載安裝程式,目前最新版的檔案應該是「Kinect-Virtual-Camera-Win32-v0.8.exe」。
安裝
由於他是使用 OpenNI 這個平台,所以請先把 Windows 上的 OpenNI 環境安裝好;這部分的步驟,雖然不是最新的,不過如果完全沒概念,建議還是參考一下之前的《在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡易教學)》這篇文章。
而 OpenNI 的環境好了後,接下來就是執行下載下來的安裝程式、完成安裝了。
不過,他的安裝程式似乎沒有做得很好?以 Heresy 使用的 Windows 7 來說,由於預設的安裝路徑是在「C:Program FilesKinect Virtual Camera」,再加上他還會去使用 regsvr32.exe 來登錄相關的模組,所以是需要管理者權限才能完成安裝的;但是他的安裝程式並沒有主動要求管理者權限,所以直接按「下一步」的話,是會出現錯誤訊息而無法安裝的。
所以,如果要完成安裝的話,必須要自行使用系統管理者權限來執行安裝程式;方法很簡單,就是在安裝檔上按右鍵,選擇「以系統管理員身分執行」就可以了。
使用
如果正確安裝完成的話,之後就可以在各種透過 DirectShow Filter 存取視訊裝置的程式裡(Windows Live Messenger / MSN 和 Skype 都是),找到新加入的 webcam 了∼
他基本上提供了三個名稱以「Kinect Virtual Camera」開頭的虛擬 webcam,分別是:
- Image(彩色影像)
- Depth(深度影像、以灰階顯示)
- SmartCam(智慧型)
像右邊的截圖,就是 Heresy 的 Windows Live Messenger 抓到的攝影機列表(Kinect 以外其他的,都是其他的虛擬攝影機)。
Image 和 Depth 這者基本上是 Kinect 本來就會提供的影像資料,那第三個「SmartCam」是幹嘛的呢?
SmartCam 基本上應該是使用了 OpenNI 的 user generator 來找到畫面中的人,並把彩色影像的畫面做適當的裁切、縮放,讓輸出的畫面會去追著拍攝到的畫面跑(Kinect 本身是不會動的),把人盡量放到中心∼這應該也算是一個相當實用的功能了!
下面的截圖,就是同時顯示三種虛擬攝影機的畫面的結果;左上角是 Depth,右上角是 Image,下方則是 SmartCam。可以發現,SmartCam 的畫面範圍和另外兩者是有差異的!而這就是他自動追蹤人的效果了。
或者,YouTube 上,也有官方的 SmartCam 示意影片可以參考(連結)。
這篇簡單的介紹就到這了∼基本上,透過這個 Kinect Virtual Camera,就可以把 Kinect 當作智慧型的 webcam 來用了!對於有 Kinect 但是沒有 webcam 的人來說,還算是滿方便的啦∼而且,大概也沒多少人可以用深度畫面來當作 webcam 的畫面吧∼ :p
不過,比較可惜的,還是「聲音」和「馬達」兩點。
雖然 Kinect 在硬體上是搭配了四個單元的麥克風陣列,理論上應該會有不錯的收音效果;但是由於目前 SensorKinect 並沒有提供聲音方面的驅動程式,所以在使用 OpenNI 環境的情況下,還是沒辦法使用 Kinect 來收音的… orz
同樣的情況,也發生在 Kinect 的馬達上。他雖然內建了可以做一定程度旋轉的馬達,但是 OpenNI 並沒有定義相關的介面、SensorKinect 也沒有提供相關的控制,所以現階段也還沒有辦法在 OpenNI 的平台上、控制 Kinect 去做視角的調整…如果可以的話,SmartCam 的功能應該會更強大吧∼
最後,由於這個程式是 OpenSource 的,如果想要研究他的原始碼的話,也可以下載來看看(下載連結)。不過要注意的是,要編譯這個程式,除了需要 OpenNI 和 NITE 的 SDK 之外,也需要 Windows SDK。