Esempio n. 1
0
    private void AcquireImages()
    {
        if (requestNewFrame && zedReady)
        {
            /// call grab() to request a new frame
            sl.ERROR_CODE e = zedCamera.Grab(ref runtimeParameters);

            lock (grabLock)
            {
                if (e == sl.ERROR_CODE.CAMERA_NOT_DETECTED)
                {
                    Debug.Log("Camera not detected or disconnected.");
                    isDisconnected = true;
                    Thread.Sleep(10);
                    requestNewFrame = false;
                }
                else if (e == sl.ERROR_CODE.SUCCESS)
                {
                    //Save the timestamp
                    cameraTimeStamp = zedCamera.GetCameraTimeStamp();

#if UNITY_EDITOR
                    float camera_fps = zedCamera.GetCameraFPS();
                    cameraFPS = camera_fps.ToString() + "Fps";

                    if (camera_fps <= FPS * 0.8)
                    {
                        cameraFPS += " WARNING: Low USB bandwidth detected";
                    }
#endif

                    //Get position of camera
                    if (isTrackingEnable)
                    {
                        zedtrackingState = zedCamera.GetPosition(ref zedOrientation, ref zedPosition, ref rotationOffset, ref positionOffset);
                    }
                    else
                    {
                        zedtrackingState = sl.TRACKING_STATE.TRACKING_OFF;
                    }


                    // Indicate that a new frame is available and pause the thread until a new request is called
                    newFrameAvailable = true;
                    requestNewFrame   = false;
                }
            }
        }
        else
        {
            //to avoid "overheat"
            Thread.Sleep(1);
        }
    }
Esempio n. 2
0
    private void AcquireImages()
    {
        if (requestNewFrame && zedReady)
        {
            sl.ERROR_CODE e = sl.ERROR_CODE.NOT_A_NEW_FRAME;

            // Live or SVO ? if SVO is in pause, don't need to call grab again since image will not change
            if (zedSVOManager == null)
            {
                e = zedCamera.Grab(ref runtimeParameters);
            }
            else
            {
                if (!zedSVOManager.pause)
                {
                    e = zedCamera.Grab(ref runtimeParameters);
                }
                else
                {
                    if (zedSVOManager.NeedNewFrameGrab)
                    {
                        e = zedCamera.Grab(ref runtimeParameters);
                        zedSVOManager.NeedNewFrameGrab = false;
                    }
                    else
                    {
                        e = sl.ERROR_CODE.SUCCESS;
                    }
                }
            }


            lock (grabLock)
            {
                if (e == sl.ERROR_CODE.CAMERA_NOT_DETECTED)
                {
                    Debug.Log("Camera not detected or disconnected.");
                    isDisconnected = true;
                    Thread.Sleep(10);
                    requestNewFrame = false;
                }
                else if (e == sl.ERROR_CODE.SUCCESS)
                {
                    //Save the timestamp
                    cameraTimeStamp = zedCamera.GetCameraTimeStamp();

#if UNITY_EDITOR
                    float camera_fps = zedCamera.GetCameraFPS();
                    cameraFPS = camera_fps.ToString() + "Fps";

                    if (camera_fps <= FPS * 0.8)
                    {
                        cameraFPS += " WARNING: Low USB bandwidth detected";
                    }
#endif

                    //Get position of camera
                    if (isTrackingEnable)
                    {
                        zedtrackingState = zedCamera.GetPosition(ref zedOrientation, ref zedPosition, sl.TRACKING_FRAME.LEFT_EYE);
                    }
                    else
                    {
                        zedtrackingState = sl.TRACKING_STATE.TRACKING_OFF;
                    }


                    // Indicate that a new frame is available and pause the thread until a new request is called
                    newFrameAvailable = true;
                    requestNewFrame   = false;
                }
                else
                {
                    Thread.Sleep(1);
                }
            }
        }
        else
        {
            //to avoid "overheat"
            Thread.Sleep(1);
        }
    }