kishi-r.com

レコードとスケボー、ピストと本とコンピューターたちを書いているブログ

Kinect+Openframeworksで透明人間っぽいのをやってみた

with 2 comments

攻殻機動隊好きとしては、やはりやりたいですよね「光学迷彩」。

ってことで今頃!って感じですが、「Kinect+Openframeworks」でちょい試してみました。

# 何も調整していないので、かなーり荒いですがw

実装方法は、

1. あるフレームをピクセルで取得しておく
2. ユーザーが認識出来たら「1」のピクセルを深度情報のピクセルへと乗せる
3. ライブの動画に乗せる

ってだけです。
なので、カメラ動かしたりすると深度情報部分に乗せてる画像が背景とずれるw
これは何かしらの対応をしないとね :-)

まぁー試しって事で、もうちょいOpenCVも勉強しつつ調整していきます。

ついでにVimeoアカウントを取って今回の成果をアップロードしてみた。

参考URL:
openFrameworks + OpenCVで映像合成 – inter-arteq.com :: interaction between art and technology
http://inter-arteq.com/opencv/

Written by kishir

1月 18th, 2012 at 12:18 am

Openframeworks+OpenNIの設定をしてみるよ

without comments

OpenNI」やるって言ってたのに、手を抜いて「ofxOpenNI」を最初にやってしまったので、

こちらもちゃんとやったぞ!って事でちゃんと書かないとね。

でもね、でもね・・・

OpenNIをOpenframeworksで使う
http://blog.hi-farm.net/2011/12/24/openniをopenframeworksで使う/

を参照すればOK。もうなーんてこたぁーない :D

ただし自分自身の確認とメモのため記述しておきます。

ちなみにMacで試しているのでご注意を :-)

前回の記事でダウンロードした「OpenFrameworks」を使用する。
今回使用したバージョンは「of_preRelease_v007_osx」というやつ。

# 注意点として「XCodeは4.1」で実行。
さらに「PROJECT/TARGETS」の「Build Setting > Base SDK」を「10.6」にしておく
4.2だと動かなかったので、もうちょい検証が必要。

今後アップデートで対応って本家サイトに書いてあったのでひとまず放置

# 4.2でもちゃんと動いてた・・・gccがエラってたんだけど大丈夫だった。

使用する「OpenNI」はこちらでインストールしたものを使用する。

大まかな流れは・・・


1. OpenFreamworksへ自分のアプリディレクトリの作成
2. アプリディレクトリへ空のプロジェクトをコピー
3. コピーしたプロジェクトへ「OpenNI」ディレクトリの作成
4. 「3」で作成したディレクトリへ「OpenNIライブラリ」の必要なファイルをコピー
5. Xcodeでパスの設定を行う
6. Xcodeで実際にOpenNIのファイルをincludeしてテスト

となる。

では上から順番に設定していく。

1. OpenFreamworksへ自分のアプリディレクトリの作成

Openframeworksの作法として「/of_preRelease_v007_osx/apps」以下へ、

自分のアプリディレクトリを作成する。というのがあるようなので、今回は「myApps」という

ディレクトリを作成してみた。

of_preRelease_v007_osx
|— addons
|— apps
|   |— addonsExamples
|   |— examples
|   |— myApps // create dir
|— libs
|— reademe.osx

実行コマンドは下記

$ cd ~/Desktop/of_preRelease_v007_osx/apps
$ mkdir myApps

2. アプリディレクトリへ空のプロジェクトをコピー

「1」で作成した「myApps」の直下へ「/of_preRelease_v007_osx/apps/examples/emptyExample」を

コピーして配置する

of_preRelease_v007_osx
|— addons
|— apps
|   |— addonsExamples
|   |— examples
|   |— myApps
|      |— emptyExample // copy dir
|— libs
|— reademe.osx

実行コマンドは下記

$ cd ~/Desktop/of_preRelease_v007_osx/apps/myApps
$ cp -r ../examples/emptyExample ./

3. コピーしたプロジェクトへ「OpenNI」ディレクトリの作成

「2」で追加したディレクトリ「emptyExample」の直下へ「OpenNI」という

ディレクトリを作成する

of_preRelease_v007_osx
|— addons
|— apps
|   |— addonsExamples
|   |— examples
|   |— myApps
|      |— emptyExample
|         |— bin
|         |— emptyExample.xcodeproj
|         |— openFrameworks-Info.plist
|         |— OpenNI // create dir
|         |— Project.xcconfig
|         |— src
|— libs
|— reademe.osx

実行コマンドは下記

$ cd ~/Desktop/of_preRelease_v007_osx/apps/myApps/emptyExample
$ mkdir OpenNI

4. 「3」で作成したディレクトリへ「OpenNIライブラリ」の必要なファイルをコピー

以前、インストールした「OpenNI」のディレクトリ内にある「Include」「Lib」という

ディレクトリがあるのでこちらを「3」で追加したディレクトリ「OpenNI」ヘ丸っとコピーする

of_preRelease_v007_osx
|— addons
|— apps
|   |— addonsExamples
|   |— examples
|   |— myApps
|      |— emptyExample
|          |— bin
|          |— emptyExample.xcodeproj
|          |— openFrameworks-Info.plist
|          |— OpenNI
|              |— Include // copy dir
|              |— Lib // copy dir
|          |— Project.xcconfig
|          |— src
|— libs
|— reademe.osx

実行コマンドは下記

$ cd ~/Desktop/of_preRelease_v007_osx/apps/myApps/emptyExample/OpenNI
$ cp -r /usr/local/src/OpenNI-Bin-Dev-MacOSX-v1.5.2.7/Include ./
$ cp -r /usr/local/src/OpenNI-Bin-Dev-MacOSX-v1.5.2.7/Lib ./

# 注意点として、「OpenNI-Bin-Dev-MacOSX-v1.5.2.7」は自分で落としたディレクトリ名へと

置き換えて実行してください。でないと「ディレクトリが存在しないよ」って怒られる。

5. Xcodeでパスの設定を行う

Xcodeで今回追加したプロジェクトファイルを開く。

次にプロジェクトにヘッダー参照パスとライブラリパスの設定する。

プロジェクト設定の 「Build Settings > Search Paths」の

「Header Search Paths」に以下を設定します。


$(SRCROOT)/OpenNI/Include

Library Search Pathsに以下を設定します。


$(SRCROOT)/OpenNI/Lib

# $(SRCROOT)は自分のパスを確認しておくこと。

6. Xcodeで実際にOpenNIのファイルをincludeしてテスト

「/of_preRelease_v007_osx/apps/myApps/emptyExample/emptyExample.xcodeproj」を開く。

「src」にある「testApp.h」へ「#include “XnCppWrapper.h”」を追記する。

例:

#pragma once
#include “ofMain.h”
#include “XnCppWrapper.h” // add

上記で問題無くビルド出来たらOpenNIの準備は完了。

# ちなみにビルドすると、「Semantic Issue」というエラーが大量に発生するが、

原因は「includeを多重に行っているから」らしい。ライブラリ依存って事で今回はスルーします。

これで「Openframeworks+OpenNI」の準備が整った。

次は「OpenNI」のサンプルソースを動作させてテストする。

参考サイトURL

OpenNIをOpenframeworksで使う
http://blog.hi-farm.net/2011/12/24/openniをopenframeworksで使う/

ここのサンプルソースを「testApp.h」「testApp.cpp」へ追記してビルド。

これで環境の作成は完了。後は実装とエラーを取らないとな・・・・。

他、参考サイト:

http://d.hatena.ne.jp/hagino_3000/
https://github.com/hagino3000/kinectbook

Written by kishir

1月 5th, 2012 at 10:13 pm

ofxOpenNIでKinectを動かしてみる

without comments

さて、「Kinectハッカーズマニュアル」にも記述されていた「ofxOpenNI」を試す。

前回の記事でダウンロードした「OpenFrameworks」を使用する。今回使用したバージョンは「of_preRelease_v007_osx」というやつ。

# 注意点として「XCodeは4.1」で実行。

さらに「PROJECT/TARGETS」の「Build Setting > Base SDK」を「10.6」にしておく
(4.2だと動かなかったので、もうちょい検証が必要。
今後アップデートで対応って本家サイトに書いてあったのでひとまず放置)

# ごめんなさい、ごめんなさい「4.2」でも動きました。

では始めにアドオン「ofxOpenNI」をダウンロードする。


gitgub:
gameoverhack / ofxOpenNI
https://github.com/gameoverhack/ofxOpenNI

からzipでもgitでも良いのでダウンロードもしくはcloneで持ってくる。

持ってきたら設置・設定を行う。

上記サイトに「DRIVERS & SETTING UP YOUR OWN PROJECTS」という項目で、

セッティングするための内容が記載されています。


Mac OS X:
You don’t need to do any install of drivers if you don’t want, just:

* Do the git magic above or somehow else get a copy of ofxOpenNI into your addons directory
* Make a new project (in 062 by copying emptyExample folder from the apps/examples/ directory into your working path -> something like ofFolder/apps/dev/)
* Copy the folder called ‘lib’ from ‘ofxOpenNI/mac/copy_to_data_openni_path’ to your ‘bin/data/openni’ directory of your emptyExample
* In Xcode make a new Group called ‘ofxOpenNI’ under ‘Addons’ (right or control click the ‘Addons’ Group, select Add->New Group)
* Drag the ‘src’ and ‘include’ folders from inside the ofxOpenNI folder (in your addons directory) into the Group ‘ofxOpenNI’ you just made.
* Drag the folder ‘lib’ from bin/data/openni (the one you just copied) into the Group ‘ofxOpenNI’
* Add #include “ofxOpenNI.h” at the top of your testApp.h (or in whatever class you’re using ofxOpenNI)

これを「A-Z」まで順番に言えないレベルの英語力の私ですが読んでみたところ、


まっくおーえすてん

特に必要としないならやらなくて良いよー :-)

1. 「of_preRelease_v007_osx」の「addons」ディレクトリへ「ofxOpenNI」ディレクトリを移動
2. 新規プロジェクトの作成(今回は例として「/apps/examples/emptyExample」で試す)
3. 「ofxOpenNI」ディレクトリ内「/mac/copy_to_data_openni_path」の「lib」ディレクトリを
「2」で作成したプロジェクトの「/bin/data」へ「openni」ディレクトリを新規作成してコピー
4. XCodeで「addons」ディレクトリ直下へ「ofxOpenNI」というグループを新規作成
5. XCodeで「4」で作成した「ofxOpenNI」グループに「src」「include」ディレクトリを
ドラッグアンドドロップ(参照でOK)
6. 「3」でコピーした「lib」ディレクトリも「5」と同じくドラッグアンドドロップで追加
7. 「testApp.h」のソースコード内の上部へ「#include “ofxOpenNI.h」を追記して「Run」を実行

最後の「Run」で「Build Success」になれば、インクルードなどに問題無く読めているとのこと。
ここまで順調にやれば問題無くビルドは通ってるはず(と信じたいですね)

ここまで行うと下記のようになっっているはず。

問題無くビルド出来たら、次は実際にofxOpenNIのサンプルを試すことにする。

ん?でも「ofxOpenNI」にある「config」ディレクトリも必要なんじゃないかい???
設定がめっちゃ書かれているんだもん。NITEのkeyとかもここに書かれている。

ということで設置せずに試したらやはりエラーになり、あえなく撃沈。
予想通りでした :-)


「config」ディレクトリを設置

1. 「addons」ディレクトリの「ofxOpenNI」にある「/bin/data/openni/config」を確認
2. 次に「1」で確認したディレクトリを「/apps/example/emptyExample/bin/data/openni」へコピー

ここまで出来たら後はサンプルをそのままコピペしてきて試す事にする。

「addons」ディレクトリの「ofxOpenNI」にある「/example/src」の

-「main.cpp」
-「testApp.h」
-「testApp.cpp」

を「/apps/example/emptyExample/src」のそれぞれのファイルへコピペするだけ。
コピペだけですいません、サンプルはまた作りますので許して下さい。

いざ・・・実行!

まず、「Kinect」を接続せずに実行すると・・・


warning: Could not find object file “/Developer/usr/lib/gcc/i686-apple-darwin10/4.0.1/libgcc.a(_eprintf.o)”
- no debug information available for “/var/tmp/gcc_40/gcc_40-5494~211/src/gcc/libgcc2.c”.
warning: Could not find object file
“/Users/theo/Documents/CODE/__OPENFRAMEWORKS/gitOF/openFrameworks/apps/devApps/
macDragDropExample/buildGlutFrameworkHackedWindowLevel10.4/libForeground.a(macx_foreground.o)”
- no debug information available for “/Users/mcast/Code/GLUT-ToPost/macx_foreground.m”.

と2つのエラーが出るのでご注意。

次にしっかりと「Kinect」を接続して実行(Run)すると・・・

おー!しっかりと表示されてログも出てますね。

ちなみにキーバインドで「上下」が効くので試しに押してみると、
なんとKinectを操作出来るじゃありませんか!!! :D

すげー、まじでおもしれー!!!

Written by kishir

1月 4th, 2012 at 1:59 pm

Mac(XCode 4.1)でOpenFrameworks(preRelease_v007)を弄ってみる

with one comment

MacでKinectやったので今度は「XCode」で前回の記事でインストールした「OpenNI」を

どしどし使っていければと思い、まずは「OpenFrameworks」を使えるようにするのでよろしくどうぞ :D

OpenFrameworksは現時点での最新版が「of_preRelease_v007_osx」となっていました。

# 下記サイトからダウンロードが可能
http://www.openframeworks.cc/download/
(今回は上記URL内にある「osx」で試しました)

前提として、

環境が「XCode 4.2」の場合、「12.01.03」時点ではOpenFrameworksが、

フォーラムなどを確認しても動きそうにないという事が解った。

#1 あってるかな?もし動くのであれば是非教えて下さい。
#2 今後、アップデートで対応していくようですね。

動作出来る様に色々と調べたいが時間が掛かりそうだったので、しょうがなく「XCode 4.1」で試していく。

# ごめんなさい、ごめんなさい「4.2」でも動きました。

OpenFrameworksをまずはダウンロードして設定していきたいので、

こちらから落としきたファイル一式のディレクトリ構造を確認すると、

- of_preRelease_v007_osx
|– addons
|– apps
|– libs
|– readme.osx

となっています。(バージョンが違う場合は構造が違う場合があるので注意)

上記内にある「apps」以下を確認します。

- apps
|– addonsExamples
|– examples

となっているのでこちらの「examples」にある「emptyExample」
こちらが今後、「ベーステンプレート」になるので忘れないようにしておく。

このファイル一式には「XCodeのプロジェクトファイル」も含まれているので、
試しにこいつを起動させて試していく。
# 実行ファイルは「/apps/examples/emptyExample/emptyExample.xcodeproj」

XCodeで起動させて、普通に「Run」をクリックするとがっつりとエラーが出てくるのだが、
この原因は「プロジェクト:emptyExample」の「BaseSDK」が「10.7」となっているため。

こちらを修正する。

下記画面を見て解るようにまず「active scheme」を「emptyExample」へ変更しておく。

つぎに左サイドバーに表示されている「emptyExample」を選択して、

・「Build Settings > Base SDK」を「Mac OS X 10.6」

へ変更する。

そして「Run」をクリックすると、ウィンドウが表示されるのを確認出来る。
# なーんもないグレーの画面ですがw

とりあえずこれでOpenFrameworksが動作することを確認出来た。

次は、「OpenFrameworks+OpenNI」を試して実装していく。

Written by kishir

1月 4th, 2012 at 12:17 am

Posted in Mac,OpenFrameworks

MacでKinectを使うために諸々をインストールしてみた

with one comment

明けましておめでとうございます :-)
お付き合いいただいている方、これから出会う方、本年もよろしくお願いいたします。

ということで、届いちゃいました「Kinect」と「Kinectハッカーズマニュアル」。

FF13-2が丁度発売されてクリアするのに時間が掛かり、

まだそこまで触れてないのですが、これでドンドン楽しいことをやっていきます。

でもまずは環境を揃えないといけないので諸々必要なものをインストールしていくぞー!

まず自分のMacBookProのスペックなどは下記(参考程度で

- MBP 15inch
- Mac OS X 10.7.2(Lion)
- Xcodeは「4.2」「4.1」「3.2.6」

はい、OSは「Lion」ですね「Lion」。

まずインストールする前に下記を前提とする。

- XBox360に付属しているものでは無く、
単体で販売している「Kinect」を持っている
# 付属ものだと、USB変換器などを購入しないといけなくなる
- XCodeがインストールされている
- MacPortsがインストールされている
- ファイルは全て「/usr/local/src」へダウンロードして実行する
# 自分の環境に併せて下さい

では必要な物のインストールをしていくぞっと :D

1. MacPortsを最新へ、必要なライブラリをインストール

$ cd /opt/local
$ sudo port selfupdate -d // デバッグ(詳細)付きでアップデート

// そうすると「sudo port upgrade outdated」しろ!って言われるので
$ sudo port upgrade outdated

// 必要なライブラリもインストール
$ sudo port install libtool
$ sudo port install libusb-devel +universal

2. OpenNIのインストール

- OpenNIのサイトから最新版をダウンロード

http://www.openni.org/Downloads/OpenNIModules.aspx

落としたファイルを「/usr/local/src」へ移動し解凍しておく

$ cd /usr/local/src
$ cd OpenNI-Bin-Dev-MacOSX-v1.5.2.7/
$ sudo ./install.sh
Installing OpenNI
****************************

copying shared libraries…OK
copying executables…OK
copying include files…OK
creating database directory…OK
registering module ‘libnimMockNodes.dylib’…OK
registering module ‘libnimCodecs.dylib’…OK
registering module ‘libnimRecorder.dylib’…OK
creating java bindings directory…OK
Installing java bindings…OK

*** DONE ***

全て「OK」なら完了。

3. SensorKinectのインストール

$ cd /usr/local/src
$ git clone git://github.com/avin2/SensorKinect.git SensorKinect-git
$ mkdir SensorKinect
$ tar jxf SensorKinect-git/Bin/SensorKinect-Bin-MacOSX-v5.0.3.4.tar.bz2 -C SensorKinect
$ cd SensorKinect/Sensor-Bin-MacOSX-v5.1.0.25

$ sudo ./install.sh
Installing PrimeSense Sensor
****************************

creating config dir /usr/etc/primesense…OK
copying shared libraries…OK
copying executables…OK
registering module ‘libXnDeviceSensorV2KM.dylib’ with OpenNI…OK
registering module ‘libXnDeviceFile.dylib’ with OpenNI…OK
copying server config file…OK
setting uid of server…OK
creating server logs dir…OK

*** DONE ***

// ここまできたらサンプルを動かしてみる。

$ cd /opt/local/src/OpenNI-Bin-Dev-MacOSX-v1.5.2.7/Samples/Bin/x86-Release
$ ./Sample-NiSimpleViewer
One or more of the following nodes could not be enumerated:

Device: PrimeSense/SensorKinect/5.1.0.25: The device is not connected!

// deviceが繋がってねぇーと言われるので、急いでKinectを繋げる・・・
そこで再度実行すると・・・サンプルが動作することを確認。

4. NITEのインストール

ライセンスキーは、

http://kinect.dashhacks.com/kinect-downloads/12-18-10/primesense-nite-middleware

とかで確認出来る。
OpenNIのページに記載されていると色々なブログなどでも書かれているが、
そんなもの発見出来なかったよー :-(

# でも下記方法だとライセンスキーの入力を求められなかったな・・・。
バージョンが上がってライセンスキーが必要なくなったぽいが、
他のライブラリを使う場合にひつようとなるので確認は必要。

OpneNI Downloadsリンクから、「OpenNI Modules」を選択

http://www.openni.org/Downloads/OpenNIModules.aspx

「OpenNI Compilant Middeware Binaries」
「Unstable」
「PrimeSense NITE Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.5.2.7」

を選択してDownloadボタンをクリック

$ sudo ./install.sh
Installing NITE
***************

Copying shared libraries… OK
Copying includes… OK
Installing java bindings… OK
Installing module ‘Features_1_3_0′…
ls: Features_1_3_0/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_3_1′…
ls: Features_1_3_1/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_4_1′…
ls: Features_1_4_1/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_4_2′…
ls: Features_1_4_2/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_5_2′…
Registering module ‘libXnVFeatures_1_5_2.dylib’… OK
Copying XnVSceneServer… OK
Installing module ‘Features_1_5_2′
ls: Hands_1_3_0/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_5_2′
ls: Hands_1_3_1/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_5_2′
ls: Hands_1_4_1/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_5_2′
ls: Hands_1_4_2/Bin/lib*dylib: No such file or directory
Installing module ‘Features_1_5_2′
registering module ‘libXnVHandGenerator_1_5_2.dylib’…OK
Adding license.. OK

*** DONE ***

上記で完了したので後はサンプルを実行してみる。

これで準備は整った。この後は、XCodeから実行したり「OpenFrameworks」と連携などしていく。

今回の参考サイト

- Tython 開発環境構築 with Homebrew on OS X Lion
http://d.hatena.ne.jp/gongoZ/20110809/1312899340

- MacでkinectとOpenNIを使ってみた(rosドライバ)
http://switch.dip.jp/toro/blog/?p=266

- [Kinect] MacOSX 10.7とXcode4.2でNITEのビルド環境を構築
http://netdiever.com/lls/?p=11715

- MacでXcodeをビルド
http://d.hatena.ne.jp/MshrKato/20111114/1321297522

Written by kishir

1月 4th, 2012 at 12:01 am