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); }
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(); } } }