PlayStation3 eyeでキャプチャして表示
windowsでプレステ3のカメラを使う場合は準備が必要。macはmacamでいけるはず。
- 準備:VS2008 OpenCVでPlaystation3 eyeを使う
- 普通のUSBカメラの場合:単純にキャプチャして表示 - 橋本詳解(このコードと比較するとわかりやすい)
プロジェクトごとupした
http://shokai.org/projects/opencv-study/index.cgi/file/53a02922749d/SimpleCapturePs3eye/simpleCapturePs3eye.cpp
dandelion's log » PS3EyeLibで遊んでみたを参考にした。
// プレステ3のカメラでキャプチャする #include <stdio.h> #include <highgui.h> #include <cv.h> #include <highgui.h> #include <ctype.h> #include <iostream> #include <cstdlib> #include <IPS3EyeLib.h> #define WIDTH 320 #define HEIGHT 240 #define FPS 30 #define DEPTH 24 int main(int argc, char** argv) { bool isStop = false; IplImage *image = cvCreateImage(cvSize(WIDTH, HEIGHT), IPL_DEPTH_8U, 3); IPS3EyeLib *capture = IPS3EyeLib::Create(); char winNameCapture[] = "Capture"; if(capture == NULL){ printf("capture device not found!"); return -1; } capture->SetFormat(IPS3EyeLib::GetFormatIndex(WIDTH, HEIGHT, FPS)); PBYTE capBuffer = new BYTE[(WIDTH * HEIGHT * DEPTH) / 8]; capture->StartCapture(); cvNamedWindow(winNameCapture, 0); int waitKey = 0; while (1) { if(!isStop){ if(capture->GetFrame(capBuffer, DEPTH, false)){ memcpy(image->imageData, capBuffer, image->imageSize); cvShowImage(winNameCapture, image); } } waitKey = cvWaitKey(1); if(waitKey == 'q') break; if(waitKey == ' '){ isStop = !isStop; if(isStop) printf("stop\n"); else printf("start\n"); } } delete [] capBuffer; capture->StopCapture(); cvDestroyWindow(winNameCapture); return 0; }