public CLEyeCamera(CLEyeCameraColorMode colorMode, CLEyeCameraResolution resolution) { int cameraImageWidth = 0; int cameraImageHeight = 0; hwCameraIntPtr = CLEyeCreateCamera(CameraUUID(0), colorMode, resolution, 30); if (hwCameraIntPtr == IntPtr.Zero) { return; } CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_VFLIP, 1); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_AUTO_EXPOSURE, 0); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_AUTO_GAIN, 0); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_AUTO_WHITEBALANCE, 0); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_WHITEBALANCE_GREEN, 128); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_WHITEBALANCE_BLUE, 128); CLEyeSetCameraParameter(hwCameraIntPtr, CLEyeCameraParameter.CLEYE_WHITEBALANCE_RED, 128); CLEyeCameraGetFrameDimensions(hwCameraIntPtr, ref cameraImageWidth, ref cameraImageHeight); currentImage = new ImageBuffer(cameraImageWidth, cameraImageHeight, 32, new BlenderBGRA()); cameraCopyBufferIntPtr = Marshal.AllocHGlobal(cameraImageWidth * cameraImageHeight * 4); // create thread exit event _exitEvent = new ManualResetEvent(false); // start capture here ThreadPool.QueueUserWorkItem(Capture); }
public CLEyeCameraDevice(CLEyeCameraResolution resolution, CLEyeCameraColorMode colorMode, int fps) { // set default values Framerate = fps; ColorMode = colorMode; Resolution = resolution; }
private Size GetSize(CLEyeCameraResolution resolution) { switch (resolution) { case CLEyeCameraResolution.CLEYE_QVGA: return(new Size(320, 240)); case CLEyeCameraResolution.CLEYE_VGA: return(new Size(640, 480)); default: throw (new Exception("Size unsupported")); } }
public static extern IntPtr CLEyeCreateCamera(Guid camUUID, CLEyeCameraColorMode mode, CLEyeCameraResolution res, float frameRate);
public void StartPS3Eye(bool kinectAsSupervisor) { // open devices int framerate = panel.FrameRate; currentFramerate = framerate; CLEyeCameraResolution resolution = panel.Resolution; for (int i = 0; i < activeCameras; i++) { devices[i].Framerate = framerate; devices[i].Resolution = resolution; devices[i].Create(PS3EyeDevice.CameraUUID(i)); } // update panel panel.OnGainChanged(); panel.OnExposureChanged(); panel.OnWhiteBalanceChanged(); // --- multi thread version // resolution if (resolution == CLEyeCameraResolution.CLEYE_VGA) { psWidth = 640; psHeight = 480; } else { psWidth = 320; psHeight = 240; } // sizes Context.PsWidth = psWidth; Context.PsHeight = psHeight; psPixelSize = psWidth * psHeight; psByteSize = psPixelSize * 4; // start/stop isPs3EyeRunning = true; panel.SetMode(true); if (kinectAsSupervisor) { barrier = new Barrier(numCameras); cancelSource = new CancellationTokenSource(); cancelToken = cancelSource.Token; for (int i = 0; i < numCameras; i++) { BackgroundWorker bgWorkerCam = new BackgroundWorker(); bgWorkerCam.DoWork += new DoWorkEventHandler(bgWorkerCamWithKinect_DoWork); bgWorkerCam.RunWorkerAsync(i); } } else { barrier = new Barrier(numCameras + 1); cancelSource = new CancellationTokenSource(); cancelToken = cancelSource.Token; for (int i = 0; i < numCameras; i++) { BackgroundWorker bgWorkerCam = new BackgroundWorker(); bgWorkerCam.DoWork += new DoWorkEventHandler(bgWorkerCam_DoWork); bgWorkerCam.RunWorkerAsync(i); } BackgroundWorker bgWorkerSupervisor = new BackgroundWorker(); bgWorkerSupervisor.DoWork += new DoWorkEventHandler(bgWorkerSupervisor_DoWork); bgWorkerSupervisor.RunWorkerAsync(); } }