Exemplo n.º 1
0
        private void button3_Click(object sender, EventArgs e)
        {
            Form calib = new calibration();

            calib.Owner         = this;
            calib.StartPosition = FormStartPosition.CenterScreen;
            if (!calib.IsDisposed)
            {
                calib.ShowDialog(this);
            }
            else
            {
                Application.Exit();
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// constructor
 /// </summary>
 public calibrationStereo()
 {
     leftcam  = new calibration();
     rightcam = new calibration();
 }
Exemplo n.º 3
0
        private void timUpdate_Tick(object sender, EventArgs e)
        {
            if (no_of_cameras < 2)
            {
                lblBaseline.Visible = false;
                txtBaseline.Visible = false;
            }
            else
            {
                lblBaseline.Visible = true;
                txtBaseline.Visible = true;
            }


            if (left_camera_running)
            {
                //get images from the two cameras
                captureCameraImages();

                //update from camera
                if (((no_of_cameras == 1) && (captureState[0] == 2)) ||
                    ((no_of_cameras > 1) && (captureState[1] == 2)))
                {
                    captureState[0] = 0;
                    captureState[1] = 0;

                    //show disparity
                    if (!outputInitialised)
                    {
                        picOutput1.Image = new Bitmap(picLeftImage.Image.Width, picLeftImage.Image.Height, PixelFormat.Format24bppRgb);
                        if (no_of_cameras > 1)
                        {
                            picOutput2.Image = new Bitmap(picRightImage.Image.Width, picRightImage.Image.Height, PixelFormat.Format24bppRgb);
                        }
                        output_width      = picLeftImage.Image.Width;
                        output_height     = picLeftImage.Image.Height;
                        outputInitialised = true;
                    }

                    for (int i = 0; i < no_of_cameras; i++)
                    {
                        calibration calib         = cam.leftcam;
                        PictureBox  pic           = picOutput1;
                        Byte[]      disp_bmp_data = bmp_data_left;

                        if (i > 0)
                        {
                            calib         = cam.rightcam;
                            pic           = picOutput2;
                            disp_bmp_data = bmp_data_right;
                        }

                        calib.Update(disp_bmp_data, output_width, output_height, alignMode);

                        switch (display_type)
                        {
                        case DISPLAY_EDGES:
                        {
                            BitmapArrayConversions.updatebitmap_unsafe(calib.edges_image, (Bitmap)pic.Image);
                            break;
                        }

                        case DISPLAY_CORNERS:
                        {
                            BitmapArrayConversions.updatebitmap_unsafe(calib.corners_image, (Bitmap)pic.Image);
                            break;
                        }

                        case DISPLAY_LINES:
                        {
                            BitmapArrayConversions.updatebitmap_unsafe(calib.lines_image, (Bitmap)pic.Image);
                            break;
                        }

                        case DISPLAY_CENTREALIGN:
                        {
                            if (calib.centrealign_image != null)
                            {
                                BitmapArrayConversions.updatebitmap_unsafe(calib.centrealign_image, (Bitmap)pic.Image);
                            }
                            break;
                        }

                        case DISPLAY_CURVE:
                        {
                            if (calib.curve_fit != null)
                            {
                                BitmapArrayConversions.updatebitmap_unsafe(calib.curve_fit, (Bitmap)pic.Image);
                            }
                            break;
                        }

                        case DISPLAY_RECTIFIED:
                        {
                            if (calib.rectified_image != null)
                            {
                                BitmapArrayConversions.updatebitmap_unsafe(calib.rectified_image, (Bitmap)pic.Image);
                            }
                            break;
                        }
                        }

                        pic.Refresh();
                    }

                    cam.update();

                    if (no_of_cameras == 1)
                    {
                        cam.baseline = 0;
                        if (alignMode)
                        {
                            lblStatus.Text = "Align camera";
                        }
                        else
                        {
                            if (cam.leftcam.min_RMS_error > max_RMS_error)
                            {
                                lblStatus.Text = "Calibrating...";
                            }
                            else
                            {
                                lblStatus.Text = "* COMPLETE *";
                            }
                        }
                    }
                    else
                    {
                        cam.baseline = Convert.ToSingle(txtBaseline.Text);
                        if (alignMode)
                        {
                            lblStatus.Text = "Align camera";
                        }
                        else
                        {
                            if ((cam.leftcam.min_RMS_error > max_RMS_error) || (cam.rightcam.min_RMS_error > max_RMS_error))
                            {
                                lblStatus.Text = "Calibrating...";
                                if (cam.leftcam.min_RMS_error <= max_RMS_error)
                                {
                                    lblStatus.Text = "Left camera done";
                                }
                                if (cam.rightcam.min_RMS_error <= max_RMS_error)
                                {
                                    lblStatus.Text = "Right camera done";
                                }
                            }
                            else
                            {
                                lblStatus.Text = "* COMPLETE *";
                            }
                        }
                    }

                    // switch to the rectified view when calibration is completed
                    if (prev_state != lblStatus.Text)
                    {
                        if (lblStatus.Text == "* COMPLETE *")
                        {
                            display_type = DISPLAY_RECTIFIED;
                            cmbDisplayType.SelectedIndex = display_type;
                        }
                    }
                    prev_state = lblStatus.Text;
                }
            }
        }
Exemplo n.º 4
0
 void Awake()
 {
     instance = this;
     gmInputs = new List <GameManagerInput>();    // create an empty GM input list
 }