2008 10月 22 のアーカイブ

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 コメントなし »