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;
                }
            }
        }
예제 #2
0
        //영역표시툴 생성 후 코그 디스플레이에 표시
        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);
 }
예제 #4
0
        /*
         * 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);
            }
        }