public void GetAxesParam(ADisplay aDisplay, bool isShowDistorted) { double dOriginX, dOriginY; ICogTransform2D transform2D; CogTransform2DLinear transform2DLinear = null; ICogGraphicInteractive axes = aDisplay.GetInteractiveGraphics("Calibrated Origin"); if (axes != null) { CogCoordinateAxes coordinateAxes = axes as CogCoordinateAxes; dOriginX = coordinateAxes.OriginX; dOriginY = coordinateAxes.OriginY; TransUncalibrated2CalibratedCoord(dOriginX, dOriginY, out m_dOriginX, out m_dOriginY); if (isShowDistorted == true) { transform2D = m_cogCalibCheckerboardTool.Calibration.OwnedWarpParams.GetOutputImageRootFromCalibratedTransform(); transform2DLinear = transform2D.LinearTransform(dOriginX, dOriginY).Invert(); m_dRotation = transform2DLinear.MapAngle(m_cogCoordinateAxes.Rotation) + m_dCaibratedRotation; } else { transform2D = m_cogCalibCheckerboardTool.Calibration.GetComputedUncalibratedFromCalibratedTransform(); transform2DLinear = transform2D.LinearTransform(m_dOriginX, m_dOriginY).Invert(); m_dRotation = transform2DLinear.MapAngle(coordinateAxes.Rotation) + m_dCaibratedRotation; } } }
//영역표시툴 생성 후 코그 디스플레이에 표시 private void button2_Click(object sender, EventArgs e) { if (PMTool.Pattern.Trained) { PMTool.Pattern.Untrain(); } PMTool.Pattern.TrainImage = PMTool.InputImage; //CogRectangleAffine 생성 CogRectangleAffine rec = PMTool.Pattern.TrainRegion as CogRectangleAffine;//CogPMAlignTool.Pattern.TrainRegion을 레퍼런스로 rec.GraphicDOFEnable = CogRectangleAffineDOFConstants.All; rec.Interactive = true; rec.TipText = "학습 영역"; rec.SetCenterLengthsRotationSkew(300, 300, 300, 300, 0, 0); //CogCoordinateAxes 생성 (오리진 좌표) CogCoordinateAxes axes = new CogCoordinateAxes(); axes.Transform = PMTool.Pattern.Origin;//CogPMAlignTool.Pattern.Origin을 레퍼런스로 axes.TipText = "중심좌표"; axes.GraphicDOFEnable = CogCoordinateAxesDOFConstants.All; axes.Interactive = true; axes.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; axes.OriginX = 300; axes.OriginY = 300; //코그디스플레이의 InteractiveGraphics 프라퍼티에 생성한 CogRectangleAffine, CogCoordinateAxes를 Add. MainDisplay.InteractiveGraphics.Add(rec, "RectangleAffine", false); MainDisplay.InteractiveGraphics.Add(axes, "Origin", false); }
private void cmdPatMaxSetupCommand_Click(System.Object sender, System.EventArgs e) { cogRecordDisplay1.InteractiveGraphics.Add(cogPMAlignTool.Pattern.TrainRegion as ICogGraphicInteractive, "test", false); axes = new CogCoordinateAxes(); axes.Transform = cogPMAlignTool.Pattern.Origin; axes.GraphicDOFEnable = CogCoordinateAxesDOFConstants.All & ~CogCoordinateAxesDOFConstants.Skew; axes.Interactive = true; // Add a standard VisionPro "manipulable" mouse cursor. axes.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; axes.XAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; axes.YAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; cogRecordDisplay1.InteractiveGraphics.Add((ICogGraphicInteractive)axes, "test", false); }
/* * public void GetPointParam(ADisplay aDisplay) * { * double dOriginX, dOriginY; * ICogTransform2D transform2D; * CogTransform2DLinear transform2DLinear = null; * ICogGraphicInteractive axes = aDisplay.GetInteractiveGraphics("Calibrated Origin"); * * if (axes != null) * { * CogCoordinateAxes coordinateAxes = axes as CogCoordinateAxes; * * dOriginX = coordinateAxes.OriginX; * dOriginY = coordinateAxes.OriginY; * TransUncalibrated2CalibratedCoord(dOriginX, dOriginY, out m_dOriginX, out m_dOriginY); * * if (isShowDistorted == true) * { * transform2D = m_cogCalibNPointToNPointTool.Calibration.OwnedWarpParams.GetOutputImageRootFromCalibratedTransform(); * transform2DLinear = transform2D.LinearTransform(dOriginX, dOriginY).Invert(); * m_dRotation = transform2DLinear.MapAngle(m_cogCoordinateAxes.Rotation) + m_dCaibratedRotation; * } * else * { * transform2D = m_cogCalibNPointToNPointTool.Calibration.GetComputedUncalibratedFromCalibratedTransform(); * transform2DLinear = transform2D.LinearTransform(m_dOriginX, m_dOriginY).Invert(); * m_dRotation = transform2DLinear.MapAngle(coordinateAxes.Rotation) + m_dCaibratedRotation; * } * } * } */ public void GetAxesParam(ADisplay aDisplay) { double dOriginX, dOriginY; ICogTransform2D transform2D; CogTransform2DLinear transform2DLinear = null; ICogGraphicInteractive axes = aDisplay.GetInteractiveGraphics("Calibrated Origin"); if (axes != null) { CogCoordinateAxes coordinateAxes = axes as CogCoordinateAxes; dOriginX = coordinateAxes.OriginX; dOriginY = coordinateAxes.OriginY; TransUncalibrated2CalibratedCoord(dOriginX, dOriginY, out m_dOriginX, out m_dOriginY); transform2D = m_cogCalibNPointToNPointTool.Calibration.GetComputedUncalibratedFromCalibratedTransform(); transform2DLinear = transform2D.LinearTransform(m_dOriginX, m_dOriginY).Invert(); m_dRotation = transform2DLinear.MapAngle(coordinateAxes.Rotation) + m_dCaibratedRotation; } }
private void button1_Click(object sender, EventArgs e) //Teach { if (!SettingUp) { if ((!AppGen.Inst.MDImain.frmVisionMain.FrmUnloadCarrier.flagFullTray)) { MessageBox.Show("Please acquire full frame"); return; } cogPMAlignTool.Pattern.TrainImage = CalibNPointTool.OutputImage as CogImage8Grey; //While setting up PMAlign, disable other GUI controls. SettingUp = true; DisableAll(settingUpPatMax); //Add TrainRegion to display's interactive graphics //Add SearchRegion to display's static graphics for display only. cogRecordDisplay1.InteractiveGraphics.Clear(); cogRecordDisplay1.StaticGraphics.Clear(); cogRecordDisplay1.InteractiveGraphics.Add(cogPMAlignTool.Pattern.TrainRegion as ICogGraphicInteractive, "test", false); //Now axes = new CogCoordinateAxes(); axes.Transform = cogPMAlignTool.Pattern.Origin; axes.GraphicDOFEnable = CogCoordinateAxesDOFConstants.All & ~CogCoordinateAxesDOFConstants.Skew; axes.Interactive = true; // Add a standard VisionPro "manipulable" mouse cursor. axes.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; axes.XAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; axes.YAxisLabel.MouseCursor = CogStandardCursorConstants.ManipulableGraphic; cogRecordDisplay1.InteractiveGraphics.Add((ICogGraphicInteractive)axes, "test", false); //if ((cogPMAlignTool.SearchRegion != null)) //{ // //cogPMAlignTool.SearchRegion.FitToImage(cogRecordDisplay1.Image, 0.990,0.999); // cogRecordDisplay1.StaticGraphics.Add(cogPMAlignTool.SearchRegion as ICogGraphic, "test"); // cogToolBlockEditV21.Subject.Inputs["Image"].Value = cogRecordDisplay1.Image; //} //OK has been pressed, completing Setup. } else { SettingUp = false; cogRecordDisplay1.InteractiveGraphics.Clear(); cogRecordDisplay1.StaticGraphics.Clear(); //Make sure we catch errors from Train, since they are likely. For example, //No InputImage, No Pattern Features, etc. try { CalibNPointTool = cogToolBlockEditV21.Subject.Tools["CogCalibNPointToNPointTool1"] as CogCalibNPointToNPointTool; CalibNPointTool.Run(); cogPMAlignTool.Pattern.Train(); //SavePatternToFile(); //save the teach pattern according to order name (ziv) AppGen.Inst.MDImain.frmVisionMain.savePattern("Camera3", AppGen.Inst.OrderParams.InsertCode, cogPMAlignTool.Pattern); } catch (CogException cogex) { MessageBox.Show("Following Specific Cognex Error Occured:" + cogex.Message); } catch (Exception ex) { MessageBox.Show(ex.Message, "PatMax Setup Error"); } EnableAll(settingUpPatMax); } }