Exemple #1
0
        protected override void OnFrame(Parsley.Core.BuildingBlocks.FrameGrabber fp, Emgu.CV.Image <Emgu.CV.Structure.Bgr, byte> img)
        {
            Parsley.Core.ExtrinsicCalibration ec;
            ExtrinsicCameraParameters         ecp;
            bool pattern_found = false;

            Core.CalibrationPattern p = _pattern;
            if (p != null)
            {
                Image <Gray, Byte> gray = img.Convert <Gray, Byte>();
                pattern_found = p.FindPattern(gray);
                p.DrawPattern(img, p.ImagePoints, p.PatternFound);

                // if pattern has been found ==> find extrinsics and draw the corresponding coordinate frame
                if (pattern_found == true && Context.Setup.Camera.Intrinsics != null)
                {
                    ec  = new Parsley.Core.ExtrinsicCalibration(p.ObjectPoints, Context.Setup.Camera.Intrinsics);
                    ecp = ec.Calibrate(p.ImagePoints);

                    if (ecp != null)
                    {
                        Core.Drawing.DrawCoordinateFrame(img, ecp, Context.Setup.Camera.Intrinsics);
                    }
                }
            }

            base.OnFrame(fp, img);
        }
    private void _cmb_patterns_SelectedIndexChanged(object sender, EventArgs e) {
      if (_cmb_patterns.SelectedIndex >= 0) {
        // Instance a new object from selected type
        Core.Addins.AddinInfo info = _cmb_patterns.SelectedItem as Core.Addins.AddinInfo;
        if (info != null) {
          _pattern = Core.Addins.AddinStore.CreateInstance(info) as Core.CalibrationPattern;
          _pg.SelectedObject = _pattern;

          if(Context.Setup.Camera.HasIntrinsics)
            _pattern.IntrinsicParameters = Context.Setup.Camera.Intrinsics;
        }
      }
    }
 protected override void OnFrame(Parsley.Core.BuildingBlocks.FrameGrabber fp, Emgu.CV.Image <Emgu.CV.Structure.Bgr, byte> img)
 {
     Core.CalibrationPattern pattern = _pattern;
     if (pattern != null)
     {
         Image <Gray, Byte> gray = img.Convert <Gray, Byte>();
         pattern.FindPattern(gray);
         this.UpdateStatusDisplay(pattern.PatternFound);
         this.HandleCalibrateRequest();
         this.HandleTakeImageRequest();
         this.DrawCoordinateFrame(img);
         pattern.DrawPattern(img, pattern.ImagePoints, pattern.PatternFound);
     }
 }
Exemple #4
0
 protected override void OnFrame(Parsley.Core.BuildingBlocks.FrameGrabber fp, Emgu.CV.Image <Emgu.CV.Structure.Bgr, byte> img)
 {
     Core.CalibrationPattern pattern = _pattern;
     if (pattern != null)
     {                                                         //cari pola kalibrasi jika marker kalibrasi tersedia
         Image <Gray, Byte> gray = img.Convert <Gray, Byte>(); //convert image to grayscale
         pattern.FindPattern(gray);                            //cari pola kalibrasi
         this.UpdateStatusDisplay(pattern.PatternFound);
         this.HandleCalibrateRequest();
         this.HandleTakeImageRequest();
         this.DrawCoordinateFrame(img);
         pattern.DrawPattern(img, pattern.ImagePoints, pattern.PatternFound); //gambar AR pada marker jika pattern ditemukan
     }
 }
 void HandleTakeImageRequest()
 {
     Core.CalibrationPattern pattern = _pattern;
     if (_take_image_request)
     {
         if (pattern.PatternFound)
         {
             _ic.AddView(pattern.ImagePoints);
             this.Logger.Info(String.Format("You have successfully acquired {0} calibration images.", _ic.Views.Count));
             this.Invoke((MethodInvoker) delegate {
                 _btn_calibrate.Enabled = _ic.Views.Count > 2 && !_cb_auto_take.Checked;
             });
         }
     }
     _take_image_request = false;
 }
 private void _btn_load_pattern_Click(object sender, EventArgs e)
 {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         using (Stream s = File.Open(openFileDialog1.FileName, FileMode.Open)) {
             if (s != null)
             {
                 IFormatter formatter = new BinaryFormatter();
                 _pattern = formatter.Deserialize(s) as Core.CalibrationPattern;
                 _ic      = new Parsley.Core.IntrinsicCalibration(_pattern.ObjectPoints, Context.Setup.Camera.FrameSize);
                 s.Close();
                 this.Reset();
                 _logger.Info(String.Format("Calibration pattern {0} successfully loaded.", new FileInfo(openFileDialog1.FileName).Name));
             }
         }
     }
 }
 void HandleCalibrateRequest()
 {
     Core.CalibrationPattern pattern = _pattern;
     if (_calibrate_request)
     {
         _icp = _ic.Calibrate();
         _ec  = new Parsley.Core.ExtrinsicCalibration(pattern.ObjectPoints, _icp);
         this.Logger.Info("Calibration succeeded");
         this.Invoke((MethodInvoker) delegate {
             _btn_calibrate.Enabled  = false;
             _btn_take_image.Enabled = true;
             _cb_auto_take.Enabled   = true;
             _cb_auto_take.Checked   = false;
         });
     }
     _calibrate_request = false;
 }
Exemple #8
0
 private void _btn_load_pattern_Click(object sender, EventArgs e)
 {
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         using (Stream s = File.Open(openFileDialog1.FileName, FileMode.Open)) {
             if (s != null)
             {
                 IFormatter formatter = new BinaryFormatter();
                 _pattern = formatter.Deserialize(s) as Core.CalibrationPattern;
                 s.Close();
                 _last_detected_plane = null;
                 _last_error          = Double.MaxValue;
                 _logger.Info(String.Format("Calibration pattern {0} successfully loaded.", new FileInfo(openFileDialog1.FileName).Name));
             }
         }
     }
 }
Exemple #9
0
        private void _cmb_patterns_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_cmb_patterns.SelectedIndex >= 0)
            {
                // Instance a new object from selected type
                Core.Addins.AddinInfo info = _cmb_patterns.SelectedItem as Core.Addins.AddinInfo;
                if (info != null)
                {
                    _pattern           = Core.Addins.AddinStore.CreateInstance(info) as Core.CalibrationPattern;
                    _pg.SelectedObject = _pattern;

                    if (Context.Setup.Camera.HasIntrinsics)
                    {
                        _pattern.IntrinsicParameters = Context.Setup.Camera.Intrinsics;
                    }
                }
            }
        }
 private void _btn_load_pattern_Click(object sender, EventArgs e) {
   if (openFileDialog1.ShowDialog() == DialogResult.OK) {
     using (Stream s = File.Open(openFileDialog1.FileName, FileMode.Open)) {
       if (s != null) {
         IFormatter formatter = new BinaryFormatter();
         _pattern = formatter.Deserialize(s) as Core.CalibrationPattern;
         s.Close();
         _last_detected_plane = null;
         _last_error = Double.MaxValue;
         _logger.Info(String.Format("Calibration pattern {0} successfully loaded.", new FileInfo(openFileDialog1.FileName).Name));
       }
     }
   }
 }
 /// <summary>
 /// load pola kalibrasi
 /// </summary>
 private void _btn_load_pattern_Click(object sender, EventArgs e) 
 {
   if (openFileDialog1.ShowDialog() == DialogResult.OK) 
   {
     using (Stream s = File.Open(openFileDialog1.FileName, FileMode.Open)) 
     {
       if (s != null) 
       {
         IFormatter formatter = new BinaryFormatter();
         _pattern = formatter.Deserialize(s) as Core.CalibrationPattern;
         _ic = new Parsley.Core.IntrinsicCalibration(_pattern.ObjectPoints, Context.Setup.Camera.FrameSize); //inisialisasi _ic
         s.Close();
         this.Reset();
         _logger.Info(String.Format("Calibration pattern {0} successfully loaded.", new FileInfo(openFileDialog1.FileName).Name));
       }
     }
   }
 }