Like a Long Sigh

[Kinect] Xcode4.2とOpenCV2.3.1でKinect画像をウィンドウに表示

前回のエントリーで、OpenCV2.3.1のインストールができたので、 今度はKinectで取得したデータをOpenCVで表示させるようにしてみます。 以前のエントリー[Kinect] MacOSX 10.7とXcode4.2でNITEのビルド環境を構築で作成したプロジェクトファイルを流用し、 #include <iostream> #include <stdexcept> #include <opencv2/opencv.hpp> #include <XnCppWrapper.h> const char* CONFIG_XML_PATH = “/Users/netdiever/Dropbox/Kinect/KinectSensorPrograming/src/3.2.2/SamplesConfig.xml”; int main (int argc, const char * argv[]) { IplImage* camera = 0; try { xn::Context context; XnStatus rc = context.InitFromXmlFile(CONFIG_XML_PATH); if (rc != XN_STATUS_OK) { throw std::runtime_error(xnGetStatusString(rc)); } xn::ImageGenerator image; rc = context.FindExistingNode(XN_NODE_TYPE_IMAGE, image); if (rc [...]

[Kinect] MacOSX 10.7にOpenCV2.3.1をインストール

Macportsを使えば sudo port install opencv で、あとは2時間くらい待ってればインストールが完了するのですが、 Macports場合、ライブラリが/opt/local/lib/に入ってしまいます。 今回はライブラリを/usr/local/lib/に入れたかったので、こちらのエントリーを参考にさせていただきました。 まずは、CMakeのページからMac OSX 64/32-bit Universal (for Intel, Snow Leopard/10.6 or later)のdmgファイルをダウンロードし、インストールします。 次に、OpenCV2.3.1をダウンロードし、 tar xvf OpenCV-2.3.1.tar.bz2 で解凍しておきます。 次に、先程ダウンロードしたCMakeを起動して ・Where is the source code: 展開したOpenCVのフォルダ(今回は/Users/netdiever/Downloads/OpenCV-2.3.1) ・Where to build the binaries: インストール先(今回は/Users/netdiever/OpenCV/) ・Configureをクリック ・Specify native compilersを選択してContinueをクリック 以下を指定して、Doneをクリック ・C: /usr/bin/gcc-4.2 ・C++: /usr/bin/g++-4.2 最後にBUILD_NEW_PYTHON_SUPPORTのチェックを外して、 ・もう一度Configureをクリック ・Generateをクリック これでインストール先ディレクトリにファイルができあがっているので cd /Users/netdiever/OpenCV/ make sudo make install [...]

[Kinect] MacOSX 10.7とXcode4.2でNITEのビルド環境を構築

前回の[Kinect] MacOSX 10.7にOpenNIとNITEをインストールで、OpenNIとNITEの実行環境が整ったと思っていたのですが、 サンプルソースを書いて実行を使用とするとビルドでエラーになったので、そのメモ書き。 まずはXcode4.2を開いて「Create a new project」を選択。 サイドバーからMacOSXのApplicationを選択し、Command Line Toolを選んでNext。 ProductNameとCompanyIdentifierを適当に入力し、Typeで「c++」を選択して 新規プロジェクトを作成します。 次にSamplesConfig.xmlを用意します。 <OpenNI> <Licenses> <License vendor=”PrimeSense” key=”0KOIk2JeIBYClPWVnMoRKn5cdY4=”/> </Licenses> <Log writeToConsole=”false” writeToFile=”false”> <!– 0 – Verbose, 1 – Info, 2 – Warning, 3 – Error (default) –> <LogLevel value=”3″/> <Masks> <Mask name=”ALL” on=”true”/> </Masks> <Dumps> </Dumps> </Log> <ProductionNodes> <Node type=”Image” name=”Image1″> <Configuration> <MapOutputMode xRes=”640″ [...]

[Kinect] MacOSX 10.7にOpenNIとNITEをインストール

Kinectハックのブームからはや1年くらい経ってしまっているので若干今更感はありつつも、 ときどきOpenframeworksをいじったりして表現とかに触れたりしていると、 やっぱりナチュラルインタラクション(NI)って可能性は広いし楽しいし なによりずっとやってみたかったことなので、つい最近Kinectを購入し、ちょこっと触り始めました。 参考書 勉強を始めるにあたっては、KINECTセンサープログラミングとキネクトハッカーズマニュアルを購入し、 読み進めて行ってるのですが、やっぱり当時の本なのでOSも10.6だったりXcodeも3.2.6とかだったりで、 やっぱりOSX 10.7とXcode4.2だとなんかうまくいかない箇所もでてきたわけです。 なので、ちょっとづつメモ書き程度に残しておこうと思います。 まずはモジュール周りのインストールです。 全般的にHomebrewでインストールを進めるパターンとMacPortsで進めるパターンが見受けられますが 結論から言うと、僕の技量の問題かもしれませんがHomebrewだとうまくいかなかったので、Macportsで進めました。 手順については先人に見習いまして、 ・MacPorts 2.0.3(2011/11/25時点で最新)のインストール ・sudo port install libtool ・sudo port install libusb-devel +universal ・ちなみにこちらの「[OpenNI]OpenNIがMacに対応したようです。NITEも動きます。」にも記載されているとおり、上記のコマンドでエラーが出る時がありますが、時間をおいて何度か試してみたら通りました。 ・OpenNIのモジュールダウンロードページから、OpenNI Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.4.0.2とPrimeSense NITE Unstable Build for MacOSX 10.6 Universal x86/x64 (32/64-bit) v1.5.0.2をダウンロード ・~/Kinectディレクトリにダウンロードした2つのファイルをそれぞれ~/Kinect/ni/,~/Kinect/nite/移動して、~/Kinectディレクトリから cd ~/Kinect/ni/ tar zvxf openni-bin-dev-macosx-v1.4.0.2.tar.bz2 cd OpenNI-Bin-Dev-MacOSX-v1.4.0.2 sudo [...]

[Objective-C] MPMusicPlayerControllerを使ってiPodライブラリのプレイリスト音楽を再生する

前回のエントリーでopenFrameworksからiOSのGUIを使ってみたのですが、 音を扱うならiPodのライブラリにアクセスしたいなと思い、Objective-Cでその辺の実装をしてみることにしました。 今回は、iPodライブラリのプレイリストに入っている曲をテーブルビューで表示させて、 選択された曲を再生するところまでの実装です。 まずは、プロジェクトに追加→既存のフレームワークで、MediaPlayer.frameworkを追加します。 次に、プレイリスト用のヘッダ部分です。 PlaylistTitleMenuController.h #import <UIKit/UIKit.h> #import <MediaPlayer/MediaPlayer.h> @interface PlaylistTitleMenuController : UITableViewController { NSMutableArray* sectionPlayList; NSMutableArray* sectionSongs; NSMutableDictionary* playListSongs; MPMusicPlayerController *player; } @end あとは実際にテーブルビューで表示させて、再生させる部分です。 PlaylistTitleMenuController.m #import “PlaylistTitleMenuController.h” @implementation PlaylistTitleMenuController – (void)loadView { [super loadView]; } – (void)viewDidLoad { [super viewDidLoad]; self.tableView.rowHeight = 40;//セルのサイズ } -(id)init { //画面の設定 if ((self = [super initWithStyle:UITableViewStylePlain])) [...]

[openFrameworks]iOSのGUIを使ってみる

昨日、田所さんのブログでiOSのGUIをopenFrameworksのプロジェクトに追加するという 良記事があったので、便乗エントリーです。 こちらのエントリーでは、GUI部分をInterfaceBuilderで作成していたのですが、僕自身は普段InterfaceBuilderを使わずに コードでGUI部分を実装するタイプなので、InterfaceBuilderを使わない版の実現方法を試してみました。 なので、大枠は田所さんのやり方と一緒で、相違点だけ書いていこうと思います。 ベースは、前回のエントリーで用意したopenframeworks_v007を使用しますが、コピー元となる openframeworks_v007/apps/iPhoneExamples/emptyExampleの中にプロジェクトファイル等がなかったりで ビルドして生成するのが手間だったりする場合には、openFrameworksのdownloadからv0.07のiPhone版をダウンロードしてきて、of_preRelease_v007_iphone/apps/iPhoneExamples/emptyExampleをコピーすると良いと思います。 まず、GUI部分の作成ですが、Subclassの継承元としてUIViewControllerを設定し、InterfaceBuilderは使わないので 「With XIB for user interface」のチェックを外します。ファイル名は今回は、MyGuiViewControllerにしました。 MyGuiViewController.hは、InterfaceBuilderの使用有無では特にかわりません。 #include “testApp.h” @interface MyGuiViewController : UIViewController { testApp *myApp; } @end MyGuiViewController.mmでは、InterfaceBuilderを使わない分、GUI部分のコード部分が追加されます。 また、今回はXIBは使わないので、XIB側のメソッドをコメント化して、通常のinitメソッドを追加しました。 今回はとりあえず、画面中央に「Hello World!」の文字列を出してみます。 #import “MyGuiViewController.h” @implementation MyGuiViewController /* – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; [...]

[openFrameworks]node.jsでWebSocketを使ってみる

メディアアートの現場などで使われる、C++でシリアル通信、静止画、動画、音声などが簡単に扱える openFrameworksというものに興味を持って、ちょっと前からちょくちょくと触り始めています。 ※openFrameworksってどんなんだろうって方は、こちらのギャラリーを見てもらえると とってもステキなものがたくさんあります。 そんな中、去る11/07/15(金)にイベントがあったので、明田さんと一緒に参加してきました。 そのときのイベントの詳細はこちらから。 どれも興味の惹かれる内容だったのですが、以前ちょっとだけプログラマーをやっていたのと、現在の仕事の内容的にも node.jsをoFでも使えるようにした、比嘉さん作のofxNodejsというものに一番興味が湧いたので、今回はこれにトライしてみるエントリーです。 まず、openFrameworksのgithubからダウンロードします。 普段僕はまだv0.062を使っていますが、今回はつい先日リリースされたv0.07で動かしてみます。 以降は、ダウンロードしてきたopenFrameworks v0.07を、openframeworks_v007とリネームして進めます。 構築環境はOS X 10.6.8のXcode4.0.2です。  まずはnodejsを試す前に、ダウンロードしてきたサンプルが動かせるようにしてみます。 openframeworks_v007/apps/devApps/の_DeployExamplesをビルドして実行します。 すると、内包されているサンプルプロジェクト内に、それぞれのxcodeprojが生成されますので、 あとはこれを開いて実行するだけでサンプルをゴニョゴニョといじれます。 これでひとまずサンプルが動くことが確認できましたので、今度はnodejsのサンプル実行にトライしてみます。 比嘉さんのgithubからofxNodejs一式をダウンロード openframeworks_v007の/apps 配下に、テストアプリ用のディレクトリtestappを作成 ofxNodejsのexampleをtestapp配下に設置し、ofxNodejsExampleにリネーム ofxNodejsExampleのプロジェクトファイルを開いて、プロジェクト内にofxNodejsを追加 ここでいったんビルドしてみると、結構な量のエラーが出てしまいますが、ヘッダ検索パスを追加することで対応できました。 プロジェクトファイルのBuild SettingsのSearch Paths -> Header Search Pathsに、 ../../../libs/cairo/include ../../../libs/tess2/include を追加します。 これで無事、動かすことができました。