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