Пример #1
0
        private void RaiseFocusCameraEvent(Character character)
        {
            CameraEventData cameraEventData = new CameraEventData();

            cameraEventData.transform = character.transform;

            this.focusCamera.Raise(cameraEventData);
        }
Пример #2
0
        public void Fired(IOProxy proxy, List <AbstractProxyEventData> eventData)
        {
            if (_DataWritter != null)
            {
                ImuEventData    imuEventData    = (ImuEventData)eventData.FirstOrDefault(c => c is ImuEventData);
                CameraEventData cameraEventData = (CameraEventData)eventData.FirstOrDefault(c => c is CameraEventData);

                if (imuEventData != null)
                {
                    _DataWritter.AddImu(0, imuEventData.TimeNanoSeconds, imuEventData.GyroX / 180 * Math.PI, imuEventData.GyroY / 180 * Math.PI, imuEventData.GyroZ / 180 * Math.PI, imuEventData.AccelX, imuEventData.AccelY, imuEventData.AccelZ);
                }
                if (cameraEventData != null && imuEventData != null)
                {
                    _DataWritter.AddImage(0, imuEventData.TimeNanoSeconds, cameraEventData.Image.ToPNGBinary(3), cameraEventData.ExposureTime);
                }
                else if (cameraEventData != null)
                {
                    _DataWritter.AddImage(0, -1, cameraEventData.Image.ToPNGBinary(3), cameraEventData.ExposureTime);
                }
            }
        }
Пример #3
0
        public void Fired(IOProxy proxy, List <AbstractProxyEventData> eventData)
        {
            CameraEventData cameraEventData = (CameraEventData)eventData.FirstOrDefault(c => c is CameraEventData);

            if (cameraEventData != null)
            {
                Task.Factory.StartNew(() =>
                {
                    Mat mat = cameraEventData.Image;

                    bool undistort = false;

                    Parent.SyncContext.Send(o =>
                    {
                        undistort = Undistort;

                        if (GammaCorretion)
                        {
                            Mat result = new Mat(ImageWidth, ImageHeight, DepthType.Cv32F, 1);
                            int i      = 0;
                            Mat lut    = new Mat(1, 256, DepthType.Cv32F, 1);
                            foreach (double val in Parent.SettingContainer.Settings.CalibrationSettings.PhotometricCalibrationSettings.ResponseValues)
                            {
                                lut.SetValue(0, i++, (byte)val);
                            }
                            CvInvoke.LUT(mat, lut, result);
                            result.ConvertTo(mat, DepthType.Cv8U);
                        }

                        if (VignetteCorretion)
                        {
                            Mat invVignette = new Mat(ImageWidth, ImageHeight, DepthType.Cv32F, 1);
                            Mat result      = new Mat(ImageWidth, ImageHeight, DepthType.Cv32F, 1);
                            CvInvoke.Divide(Mat.Ones(ImageWidth, ImageHeight, DepthType.Cv32F, 1), Parent.CalibrationViewModel.PhotometricCalibrationViewModel.Vignette.CvImage, invVignette, 255, DepthType.Cv32F);
                            CvInvoke.Multiply(mat, invVignette, result, 1, DepthType.Cv32F);
                            result.ConvertTo(mat, DepthType.Cv8U);
                        }
                    }
                                            , null);

                    if (undistort)
                    {
                        Mat matUndist = new Mat(ImageWidth, ImageHeight, DepthType.Cv8U, 1);

                        if (FishEyeCalibration)
                        {
                            Mat map1 = new Mat();
                            Mat map2 = new Mat();
                            Fisheye.InitUndistorRectifyMap(OrginalCameraMatrix, DistortionCoefficients, Mat.Eye(3, 3, DepthType.Cv64F, 1), CenteredCameraMatrix, new System.Drawing.Size(ImageWidth, ImageHeight), DepthType.Cv32F, map1, map2);
                            CvInvoke.Remap(mat, matUndist, map1, map2, Inter.Linear, BorderType.Constant);
                        }
                        else
                        {
                            CvInvoke.Undistort(mat, matUndist, CenteredCameraMatrix, DistortionCoefficients);
                        }
                        mat = matUndist;
                    }

                    _FPSCounter.CountFrame();
                    Parent.SyncContext.Post(o =>
                    {
                        ExposureTime = (eventData[0] as CameraEventData).ExposureTime;
                        Image        = new CvImageContainer();

                        Image.CvImage = mat;
                    }
                                            , null);
                });
            }
        }
Пример #4
0
 public override IObservable <EventMessage> OnPublishAsObservable() =>
 OnEventAsObservable()
 .Select(_ => EventMessage.Create(EventType.CameraEvent, Component, CameraEventData.Create(CameraEventType)));
Пример #5
0
 public void OnResetCamera(CameraEventData cameraEventData)
 {
     UpdateFollowTransform(null);
 }
Пример #6
0
 /*-------------------------------------------------
  *                  Event Handlers
  * --------------------------------------------------*/
 public void OnFocusCamera(CameraEventData cameraEventData)
 {
     UpdateFollowTransform(cameraEventData.transform);
 }
Пример #7
0
        //add GetHashCode and Equals
        public override bool Equals(object obj)
        {
            CameraEventData other = obj as CameraEventData;

            return(base.Equals(obj) && this.cameraLayout == other.CameraLayout && this.cameraID == other.CameraID);
        }
Пример #8
0
        private void RaiseResetCameraEvent()
        {
            CameraEventData cameraEventData = new CameraEventData();

            this.resetCamera.Raise(cameraEventData);
        }