2011年3月19日 星期六

[ Kinect ] Enabling Kinect on Linux (1)

最近 XBox Kinect 打得火熱,賣到缺貨。
很不巧的,Kinect 剛出來一兩個禮拜的時候,我就買了。
被這種新世代的體感玩法所吸引,吸引我的不是遊戲,是這個技術。
這種技術將來一定會被廣泛的應用,絕對不只是用在遊戲主機上。
短期內,我們會看到被應用在電腦上,尤其是在 Presentation 方面。
長期看來,適合整合進數位家庭,可以取代一些既有的控制器,比如電燈開關或遙控器。
但以目前來說,我覺得這個技術還有改良的空間。

現在網路上已經有不少 hacker 分享出 Kinect hacking 的成果,目前 Windows、Linux、Mac OS 都有辦法使用 Kinect。

筆者 Linux 環境為 Ubuntu 10.04,在這邊分享一下手動安裝的作法。

OpenKinect Project:http://openkinect.org/wiki/Main_Page
安裝方式也可以參考:http://openkinect.org/wiki/Getting_Started

# 安裝必要套件

$sudo apt-get install git libusb-1.0-0-dev freeglut3-dev libxmu-dev libxi-dev \
cmake cython python-dev python-numpy python-opencv

# 下載 libfreenect
$git clone https://github.com/OpenKinect/libfreenect.git

# 編譯並安裝 libfreenect
$cd libfreenect
$cmake CMAKE_PREFIX_PATH=/usr
$make
$sudo make install

# 新增 udev rule
$sudo cp udev/51-kinect.rules /etc/udev/rules.d/

# 編譯並安裝Python wrapper
$cd wrappers/python
$python ./setup build
$sudo python ./setup install --prefix=/usr 

# run C/C++ examples
$glview
$cppview
$glpclview

# run Python example
$./demo_cv_sync.py

# 如果無法執行的話,請把 demo_cv_sync.py 修改成以下的樣子。
#!/usr/bin/env python
import freenect
from opencv.cv import *
from opencv.highgui import *
#import cv
#import highgui
import numpy as np

cvNamedWindow('Depth')
cvNamedWindow('RGB')

while 1:
    depth, timestamp = freenect.sync_get_depth()
    rgb, timestamp = freenect.sync_get_rgb()
    cvShowImage('Depth', depth.astype(np.uint8))
    cvShowImage('RGB', rgb[:, :, ::-1].astype(np.uint8))
    cvWaitKey(10)

沒有留言:

張貼留言