Ejemplo n.º 1
0
        public Mat ReadDepth( )
        {
            Mat leftFrame  = LeftCamera.ReadOriginal().Remap(LeftMapX, LeftMapY);
            Mat rightFrame = RightCamera.ReadOriginal().Remap(RightMapX, RightMapY);

            Mat disparity = new Mat();

            Stereo.Compute(leftFrame, rightFrame, disparity);

            Mat depth = new Mat();

            Cv2.ReprojectImageTo3D(disparity, depth, DisparityToDepthMappingMatrix);

            return(depth);
        }
Ejemplo n.º 2
0
        private void ProcessImages(object sender, EventArgs e)
        {
            StereoImage <Bgr, byte> image = null;

            if (Model.Mode == SourceMode.Camera)
            {
                if (Controller.CameraIsEnabled())
                {
                    //image = Controller.GeatedStereoImage();
                }
            }
            else
            {
                if (Model.Image != null)
                {
                    image = Model.Image;
                }
            }

            if (image == null)
            {
                return;
            }

            SourceImage.ViewModel.Image = image;
            var temp = new StereoImage <Bgr, byte>();

            if (ResultImage.ViewModel.ShowLeft)
            {
                var model = (StereoSgbmModel)_viewModel.SgbmModel.Clone();
                model.Image1 = image.LeftImage.Convert <Gray, byte>();
                model.Image2 = image.RightImage.Convert <Gray, byte>();
                var map  = Stereo.Compute(model);
                var test = map.Convert <Bgr, byte>();
                CvInvoke.ApplyColorMap(test, test, ColorMapType.Rainbow);
                temp.LeftImage  = test;
                test            = test.SmoothGaussian(15);
                temp.RightImage = test;
            }
            if (ResultImage.ViewModel.ShowRight)
            {
                var model = (OpticalFlowModel)_viewModel.FlowModel.Clone();
                model.Image1 = image.LeftImage.Convert <Gray, byte>();
                model.Image2 = image.RightImage.Convert <Gray, byte>();
                var map = OpticalFlow.Compute(model);
                temp.RightImage = map.Convert <Bgr, byte>();
                if (temp.LeftImage == null)
                {
                    temp.LeftImage = temp.RightImage;
                }
            }
            ResultImage.ViewModel.Image = temp.Convert <Bgr, byte>();

            if (_viewModel.SaveImage)
            {
                if (_viewModel.AllowGrabImage)
                {
                    _viewModel.Images.Add(image);
                    ImageListBox.Items.Refresh();
                }
                if (_viewModel.AllowSaveImages)
                {
                    Controller.SaveImages(_viewModel.Images, DateTime.Now.Ticks.ToString());
                    _viewModel.Images.Clear();
                    ImageListBox.Items.Refresh();
                }
            }
        }