PlayStation3 eyeでキャプチャして表示

windowsプレステ3のカメラを使う場合は準備が必要。macはmacamでいけるはず。


プロジェクトごと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;
}