10月 2008 のアーカイブ

Quartz Composer Book —クォーツ コンポーザー ブック—

著者/訳者:鹿野 護

出版社:ビー・エヌ・エヌ新社( 2008-09-30 )

定価:¥ 3,990

Amazon価格:¥ 3,990

単行本(ソフトカバー) ( 196 ページ )

ISBN-10 : 486100568X

ISBN-13 : 9784861005688



出版社サイト:Quartz Composer Book —クォーツ コンポーザー ブック— (株式会社ビー・エヌ・エヌ新社)

を読みながら,サンプルをごにょごにょいじったりしています.

プログラミングの知識が無くても,自分のアイデアを簡単に可視化できるツールなので使っていて楽しい.
また,章ごとにあるプロローグ,エピローグはメッセージ性があって,単にツールの使い方に
とどまっていないのも個人的に好印象.

Macを持っている人で,Quartz Composer使ったことない人は一度遊んでみても良いかも.


Comments コメントなし »

PS3Eye Camera SDK for use in your own applications!!! « Alex Popovich’s Weblogより,
PS3用のwebカメラPlayStation EyeをDirectShowでキャプチャするためのライブラリ
PS3EyeLibが公開されたようです.

AlexPさん,ありがとう.
これで先走って買ってしまったPlayStation Eyeも自作アプリで活用できます!!

ということで,早速配布されているSDKを利用し,OpenCVと組み合わせたサンプルを紹介します.
※上記サイトのサンプルを少しいじっただけですけど。。。

間違い等ありましたら,ご指摘ありましたらよろしくお願いします.
(気が向いたら)wikiの方に利用方法を書くかもしれません.

※注意 下記コードの利用は自己責任でお願いします.

C++:
  1. //----------------------------------------------------------------------
  2. // 概要       : PS3EyeLibを用いたキャプチャサンプル
  3. // ファイル名 : CapturePS3Eye.cpp
  4. // 使用ライブラリ: 
  5. //  OpenCV for MS-Windows 1.1
  6. //  http://sourceforge.net/projects/opencvlibrary/
  7. //
  8. //  PS3EyeLib
  9. //  http://alexpopovich.wordpress.com/2008/10/20/ps3eye-camera-sdk-for-use-in-your-own-applications/
  10. //
  11. // Author    : dandelion
  12. // Date      : Oct 22, 2008; 20:00
  13. //----------------------------------------------------------------------
  14.  
  15. #include <iostream>
  16. #include <cstdlib>
  17.  
  18. //ヘッダインクルード(OpenCV関連)
  19. #include "cv.h"
  20. #include "cxcore.h"
  21. #include "highgui.h"
  22.  
  23. //ヘッダインクルード(PS3EyeLib関連)
  24. #include "IPS3EyeLib.h"
  25.  
  26. //ライブラリ読み込み(OpenCV関連)
  27. #pragma comment(lib,"cv.lib")
  28. #pragma comment(lib,"cxcore.lib")
  29. #pragma comment(lib,"highgui.lib")
  30.  
  31. //ライブラリ読み込み(PS3EyeLib関連)
  32. #pragma comment(lib,"PS3EyeLib.lib")
  33.  
  34. #define CAPTURE_WIDTH  320 //キャプチャサイズ(幅)
  35. #define CAPTURE_HEIGHT 240 //キャプチャサイズ(高さ)
  36. #define FPS             30 //フレームレート
  37. #define COLOR_DEPTH     24 //depth
  38.  
  39. using namespace std;
  40.  
  41. // 利用可能フォーマット表示関数(プロトタイプ宣言)
  42. void displayAvailableFormats(void);
  43.  
  44. int main(int argc, char *argv[])
  45. {
  46.   int key = 0;
  47.  
  48.   //キャプチャ画像
  49.   IplImage *image = cvCreateImage(cvSize(CAPTURE_WIDTH, CAPTURE_HEIGHT), IPL_DEPTH_8U, 3);
  50.  
  51.   //ウィンドウ
  52.   char* window_name = "Capture using IPS3EyeLib";
  53.   cvNamedWindow(window_name, CV_WINDOW_AUTOSIZE);
  54.  
  55.   // PS3EyeLibオブジェクト生成
  56.   IPS3EyeLib *pCam = IPS3EyeLib::Create();
  57.  
  58.   // 利用可能なフォーマットの表示
  59.   displayAvailableFormats();
  60.  
  61.   // キャプチャフォーマットの設定
  62.   pCam->SetFormat(IPS3EyeLib::GetFormatIndex(CAPTURE_WIDTH,CAPTURE_HEIGHT,FPS));
  63.  
  64.   // イメージ用バッファの確保
  65.   PBYTE pBuffer=new BYTE[(CAPTURE_WIDTH*CAPTURE_HEIGHT*COLOR_DEPTH)/8];
  66.  
  67.   // キャプチャ開始
  68.   pCam->StartCapture();
  69.  
  70.   //ESCキーが押されるまでキャプチャを続ける
  71.   while(key != 0x1b)
  72.   {
  73.     if(pCam->GetFrame(pBuffer, COLOR_DEPTH, false))
  74.     {
  75.       //キャプチャ画像をimageDataにコピー
  76.       memcpy(image->imageData, pBuffer, image->imageSize);
  77.  
  78.       //画像表示
  79.       cvShowImage(window_name, image);
  80.     }
  81.  
  82.     //キー入力
  83.     key = cvWaitKey(1);
  84.   }
  85.  
  86.   // イメージ用バッファの解放
  87.   delete [] pBuffer;
  88.  
  89.   // 後処理(PS3EyeLib関連)
  90.   pCam->StopCapture();
  91.   delete pCam;
  92.  
  93.   // 後処理(OpenCV関連)
  94.   cvDestroyWindow(window_name);
  95.   cvReleaseImage(&image);
  96.  
  97.   return 0;
  98. }
  99.  
  100. // 利用可能フォーマット表示関数
  101. void displayAvailableFormats(void)
  102. {
  103.   cout <<"[Available Formats]" <<endl;
  104.   for(int i=0; i<IPS3EyeLib::GetNumFormats(); i++)
  105.   {
  106.     int width, height, rate;
  107.     char *description;
  108.  
  109.     width       = IPS3EyeLib::GetFormats()[i].width;
  110.     height      = IPS3EyeLib::GetFormats()[i].height;
  111.     rate        = IPS3EyeLib::GetFormats()[i].rate;
  112.     description = IPS3EyeLib::GetFormats()[i].formatTxt;
  113.  
  114.     cout <<description <<endl;
  115.   }
  116. }


現在,PS3EyeLibで利用できるのは以下のフォーマットのようです(※2008/10/22現在).

320x240@15fps,
320x240@30fps,
320x240@60fps,
320x240@75fps,
320x240@100fps,
320x240@125fps,
640x480@15fps,
640x480@30fps,
640x480@40fps,
640x480@50fps,
640x480@60fps,
640x480@75fps

4000円のwebカメラでこれだけできるなんて,コストパフォーマンスがスゴすぎると思います.
学生の方は研究のお供として1台あっても良いかも.

Comments コメントなし »

巷で噂の電脳フィギュアがつい最近発売されたらしい.
#製品的にも技術的にも興味無いですが,ARの商用化事例として今後の成り行きには
#興味があるので(だいぶ離れて)静観の構え.

ただ,いろいろ不具合があるようで某巨大掲示板にもかなりの書き込みがある模様.
ざっと眺めた感じだと以下の不具合があるみたい.

(1)サーバからファイルがダウンロードできない
「電脳フィギュア ARis」のソフトがダウンロードできない不具合 - ITmedia +D PC USERの記事によると,
アクセスが集中したためサーバが処理できてないみたい.

それにしても,上記のITmediaの記事にある

昨日はアリスに「そんなのあんまりですぅ」と言わせてみたが、今日は逆に言わされてしまった……
アリスのキャラ設定にツンデレ属性はないはずだが。

という表現が皮肉すぎる。。。(うまいことまとめたなとは思うけど)

(2)アプリ終了時にプロセスが死なない
電脳フィギュア - サポート

Q. アプリケーションを一度終了し、再び起動した際、「二重起動は出来ません!」というエラーメッセージが表示されます。

にも書かれているように,アプリ終了時にプロセスが残ってしまうバグがあるみたいです.
事前にテストされていれば気付きそうなものですが。。。
#イベント出展,PV作成等のPRに力を入れすぎてテストがずさんになった?

(3)処理が重い
AKIBA PC Hotline! Junk Blog.: ミニレビュー:電脳フィギュアを使ってみたにCPU使用率について
レビューがありますが,かなりCPUパワーを要するようです.
第弐回天下一カウボーイ大会で展示されていた時に動作が遅い感じがしたのは気のせいじゃなかったってことか。。。
#逆にCore 2 Quad Q6600をここまで追い詰めるのはスゴイ気がする(むしろ,どうやったらそうなるかが気になる所)
#これより低速なCPUってのはざらにあると思われるので,推奨動作環境以上に動作ハードルは高い?

また,社長のblogの
もち肌ビジネスマン奮闘記: 電脳フィギュア ダウンロード混雑&インストール不具合につきご迷惑おかけしております。
というエントリのコメント欄はかなり荒れている模様.リリース早々雲行きが怪しくなってきたようです.

*********************
【追記】




Google Analyticsのログを見たら,10/17のアクセスがやたらと多いので何事かと思い,
調べてみたところ,「電脳タイプの次世代魔人形」 電脳フィギュアARis(アリス)発売 - アキバBlog
という記事にリンクされているのが原因っぽい.
あああああ,なんてところに目を付けられてしまったんだ。。。 orz

と地味に凹んでたら,某勉強会でお世話になった方の記事も紹介してあって何とも言えない安心感が(苦笑)
道連れ。。。じゃなかった,仲間がいた!!みたいな.

「攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング
『攻殻機動隊』『電脳メガネ』どころではない拡張現実感技術の現在 | 王様の箱庭

Comments コメントなし »

テクニカルエンジニア(ネットワーク)試験直前対策講座 < ITpro スキルアップ:ITpro
という便利なサイトがあることに昨日気付きました(遅)

それにしてもこのサイトはよくまとまっていてわかりやすい!!(もう少し前にこのサイトに気付いていれば。。。)
とりあえず,可能な限りあがいてみようと思います.

Comments コメントなし »

OpenCV@SourceForge.netにOpenCV 1.1pre1がリリースされました(2008/10/16現在,Windows版のみ).
RecentChanges等の紹介は夜にでも書こうかなと(仮)

********************************

【追記】
早速ダウンロードして,下記の環境でビルドしてみましたが失敗。。。

OS: Windows Vista Ultimate
IDE: Visual Studio 2005 Pro
OpenCV: 1.1pre1(20081016)

highguiライブラリ(Debug版)生成時のリンクでこけますね.
あと,ソリューションの構成やリンクしているライブラリが一部怪しい気がする.

まぁ,pre1ってことなのでしょうがないのかな.今日はもう寝ます。。。

【追記②】
OpenCV 1.1pre1には
OpenCV\otherlibs\_graphics\src\libjasper
にあるべき,libjasper.vs2005.vcprojやその他もろもろのファイルが抜けている気がします.

そのため,CVS版からOpenCV\otherlibs\_graphics 以下のファイルを持ってきて,
OpenCV 1.1pre1のファイルと差し替えるとビルドは一応通りました.
後で1.1pre1とCVS版のdiffでもとってみるか。。。

Comments コメントなし »

10/13(月) PM

来週,10/19(日)がネットワークの試験なので,

情報処理教科書 テクニカルエンジニア[ネットワーク]2008年度版

著者/訳者:山下 真吾

出版社:翔泳社( 2008-03-12 )

定価:¥ 3,024

単行本(ソフトカバー) ( 768 ページ )

ISBN-10 : 479811670X

ISBN-13 : 9784798116709




を片手にスタバで勉強.

ネットワークは用語が小難しくて相変わらずやる気が起きない,じゃなくて苦手です.
#午後問題の解答なんかは,当たり前のことが書いてあるんだけどね(苦笑)

しかし,このエントリのタイトルだけ読むと,自信アリ・ナシどちらにもとれるなー.
まぁ,いろいろ察してください。。。 orz

************************************************************************
帰る途中にスーパーに寄ったら,夕食はスパゲティを作る気分になったので,
ミートソースを一からつくることに.

最近はスパゲティのソースをレトルトに頼りっぱなしだったんだけど,実家にいたとき(中学以前)は
ソースから作ってたので何も見ずに作れた.小さい頃の記憶は偉大.

自分で作った方がおいしいので,時間があるときはちゃんと作ろう.>自分

************************************************************************

OpenCVのCVSリポジトリを確認したところ,

・gcc 4.3を使ったコンパイルでwarningが出た箇所の修正
・サンプルプログラムの追加
・ドキュメントの追記
等が行われているようです.

もうちょっとでリリースされるのかな?

Comments 2 コメント »

OpenCVのCVS版(2008/10/10)をダウンロードして,いろいろ遊んでみました.
自身の動作環境は以下の通りです.

OS: Windows Vista Ultimate
IDE: Visual Studio 2005 Pro
DirectShow: Windows SDK v6.0
OpenCV: CVS版(20081010)

まず,気になる機能としてSURFがあるので,OpenCVで用意されているサンプルプログラム
C:\Program Files\OpenCV\samples\c\find_obj.cpp
を試してみました.




おおー,いろいろ応用できそうな感じですね.

***********************************

また,CVS版では,highguiのキャプチャ機能にvideoInput Library
組み込まれているようです.なので,highguiで提供されているcvCreateCameraCapture関数で
DirectShowのキャプチャが利用できるようになるみたい.コード例を以下に示します.

C++:
  1. #include <cv.h>
  2. #include <cxcore.h>
  3. #include <highgui.h>
  4.  
  5. #pragma comment(lib,"cv.lib")
  6. #pragma comment(lib,"cxcore.lib")
  7. #pragma comment(lib,"highgui.lib")
  8.  
  9. int main(int argc, char **argv)
  10. {
  11.     CvCapture *capture = 0;
  12.     IplImage *frame = 0;
  13.     int c;
  14.  
  15.     //カメラキャプチャ(DirectShow)の初期化
  16.     capture = cvCreateCameraCapture(CV_CAP_DSHOW);
  17.  
  18.     //ウィンドウの表示
  19.     cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
  20.  
  21.     while(1)
  22.     {
  23.         frame = cvQueryFrame(capture);
  24.         cvShowImage("Capture", frame);
  25.         c = cvWaitKey(1);
  26.  
  27.         //ESCキーが押されたら終了
  28.         if(c == '\x1b')
  29.         {
  30.             break;
  31.         }
  32.     }
  33.  
  34.     cvReleaseCapture(&capture);
  35.     cvDestroyWindow("Capture");
  36.  
  37.     return 0;
  38. }


といった感じで,これまでの記述と同じ感じでDirectShowのキャプチャが簡単にできるようになるようです.
※ただし,2008/10/10現在のvideoInput Libraryにはfps変更用のメソッドがないので,fps変更はできません.

ということで,OpenCV/videoInput Libraryによるビデオキャプチャ
という記事の存在意義がなk(以下,自主規制)

Comments 1 コメント »

NUI Group » Sony PS3 EYE running under Windows!!! **UPDATED** (Selectable Capture Frame Rate and Resolution)
を確認したところ,

*UPDATE* 10-01-2008
I just published the early version of PS3Eye Camera DirectShow Capture Source Filter.
You can find all the info and download the files here.

という記述を発見.

Sony PS3Eye Camera DirectShow Capture Source Filter « Alex Popovich’s Weblog
でDirectShow対応ドライバを配布しているみたい.ちょっと週末試してみる!!

ということで,先走って買ってしまったPlayStation Eyeも活用できそうです(苦笑)

Comments コメントなし »