Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        private void DisplayGraphic()
        {
            App.Current.Dispatcher.Invoke(new Action(delegate
            {
                float alignX        = -1;
                float alignY        = -1;
                float rotation      = -1;
                CogDisplayOut.Image = CogAcqFifoEdit.Subject.OutputImage;
                if (CogAcqFifoEdit.Subject.OutputImage == null)
                {
                    CogDisplayOut.Image = new CogImage8Grey(2592, 1944);
                }
                CogDisplayOut.StaticGraphics.Clear();
                //
                if (CogPMAlign.Subject.Results.Count > 0)
                {
                    var AlignGraphic   = CogPMAlign.Subject.Results[0].CreateResultGraphics(CogPMAlignResultGraphicConstants.CoordinateAxes);
                    AlignGraphic.Color = CogColorConstants.DarkGreen;
                    CogDisplayOut.StaticGraphics.Add(AlignGraphic, "");
                    alignX   = (float)CogPMAlign.Subject.Results[0].GetPose().TranslationX;
                    alignY   = (float)CogPMAlign.Subject.Results[0].GetPose().TranslationY;
                    rotation = (float)CogPMAlign.Subject.Results[0].GetPose().Rotation;
                    //
                    // Static Graphic
                    CogLine GraphicTest_X   = new CogLine();
                    GraphicTest_X.LineStyle = CogGraphicLineStyleConstants.Solid;
                    GraphicTest_X.X         = CogCalibGrid.Subject.Calibration.GetComputedUncalibratedFromCalibratedTransform().LinearTransform(0, 0).TranslationX;
                    GraphicTest_X.Y         = CogCalibGrid.Subject.Calibration.GetComputedUncalibratedFromCalibratedTransform().LinearTransform(0, 0).TranslationY;
                    GraphicTest_X.Rotation  = 0;
                    CogLine GraphicTest_Y   = new CogLine();
                    GraphicTest_Y.LineStyle = CogGraphicLineStyleConstants.Solid;
                    GraphicTest_Y.X         = CogCalibGrid.Subject.Calibration.GetComputedUncalibratedFromCalibratedTransform().LinearTransform(0, 0).TranslationX;
                    GraphicTest_Y.Y         = CogCalibGrid.Subject.Calibration.GetComputedUncalibratedFromCalibratedTransform().LinearTransform(0, 0).TranslationY;
                    GraphicTest_Y.Rotation  = Math.PI / 2;
                    GraphicTest_X.Color     = CogColorConstants.DarkRed;
                    GraphicTest_Y.Color     = CogColorConstants.DarkRed;
                    CogDisplayOut.StaticGraphics.Add(GraphicTest_X, "Test");
                    CogDisplayOut.StaticGraphics.Add(GraphicTest_Y, "Test");
                }
                //
                CogGraphicLabel cogGraphicLabelTest = new CogGraphicLabel();
                cogGraphicLabelTest.SetXYText(10, 10, $"RTC Camera {currentCameraIndex}   X = {alignX}  Y = {alignY}   Angle = {rotation}");
                cogGraphicLabelTest.Font            = new Font(FontFamily.GenericSansSerif, 10, System.Drawing.FontStyle.Bold);
                cogGraphicLabelTest.Color           = CogColorConstants.White;
                cogGraphicLabelTest.BackgroundColor = CogColorConstants.Black;
                cogGraphicLabelTest.Alignment       = CogGraphicLabelAlignmentConstants.TopLeft;
                CogDisplayOut.StaticGraphics.Add(cogGraphicLabelTest, "Test");
                //
                if (CogPMAlign.Subject.SearchRegion != null)
                {
                    var SearchRegion   = (CogPMAlign.Subject.SearchRegion.Map(CogPMAlign.Subject.InputImage.GetTransform("@", "."), CogCopyShapeConstants.All) as CogRectangleAffine);
                    SearchRegion.Color = CogColorConstants.Orange;
                    CogDisplayOut.StaticGraphics.Add(SearchRegion, "Test");
                }

                CogDisplayOut.Fit();
            }));
        }
Exemplo n.º 2
0
        // 2013.12.22
        public void AddLine(double dX, double dY, double dRotation, CogColorConstants color)
        {
            CogLine cogLine = new CogLine();

            cogLine.X        = dX;
            cogLine.Y        = dY;
            cogLine.Rotation = dRotation;

            ICogGraphic icogGraphic = cogLine as ICogGraphic;

            icogGraphic.Color = color;
            AddStaticGraphic(icogGraphic, "");
        }
Exemplo n.º 3
0
        // 2013.12.22
        public void AddLine(double dX, double dY, double dRotation, CogColorConstants color, string strSpaceName)
        {
            CogLine cogLine = new CogLine();

            cogLine.X        = dX;
            cogLine.Y        = dY;
            cogLine.Rotation = dRotation;

            cogLine.SelectedSpaceName = strSpaceName;

            ICogGraphic icogGraphic = cogLine as ICogGraphic;

            icogGraphic.Color = color;
            AddStaticGraphic(icogGraphic, "");
        }
Exemplo n.º 4
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : Run
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLRun(System.Drawing.Bitmap bipmapImage, out CResultData objResultData)
        {
            objResultData = new CResultData();
            bool bReturn = false;

            do
            {
                try
                {
                    m_dScore = 0;
                    m_objFindLineTool.InputImage = new CogImage8Grey(bipmapImage);
                    m_objFindLineTool.Run();

                    if (0 < m_objFindLineTool.Results.Count)
                    {
                        m_objResultLine        = m_objFindLineTool.Results.GetLine();
                        m_objResultLineSegment = m_objFindLineTool.Results.GetLineSegment();
                        m_objGraphics          = m_objFindLineTool.Results[0].CreateResultGraphics(CogFindLineResultGraphicConstants.All);

                        m_objResultLine.GetXYRotation(out m_dLinePositionX, out m_dLinePositionY, out m_dAngle);
                        m_dAngle = m_dAngle * (180 / Math.PI);
                    }
                    else
                    {
                        m_dLinePositionX = 0; m_dLinePositionY = 0; m_dAngle = 0;
                        MakeErrorMessage("HLSaveRecipe", 5305, "Line Fail");
                        break;
                    }
                }
                catch (System.Exception ex)
                {
                    Trace.Write(ex.Message + "-> " + ex.StackTrace);
                    break;
                }

                m_dScore = 1;
                bReturn  = true;
            } while(false);

            //   objResultData.objGraphics = new CogCompositeShape();
            objResultData.dLinePositionX[0] = m_dLinePositionX;    objResultData.dLinePositionY[0] = m_dLinePositionY;        objResultData.dLineAngle[0] = m_dAngle;    objResultData.dScore[0] = m_dScore;
            //  objResultData.objGraphics = m_objGraphics;               objResultData.bitmapInputImage = bipmapImage;
            objResultData.bResult = bReturn;
            m_objResultData       = ( CResultData )objResultData.Clone();
            return(bReturn);
        }
Exemplo n.º 5
0
        private Boolean make_results()
        {
            string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString();

            try
            {
                if (mFindLineTool.Results != null)
                {
                    CogLine        iLine        = mFindLineTool.Results.GetLine();
                    CogLineSegment iLineSegment = mFindLineTool.Results.GetLineSegment();

                    if (iLine != null && iLineSegment != null)
                    {
                        mFindLineTool_Results.lineX    = iLine.X;
                        mFindLineTool_Results.lineY    = iLine.Y;
                        mFindLineTool_Results.rotation = iLine.Rotation;
                        mFindLineTool_Results.startX   = iLineSegment.StartX;
                        mFindLineTool_Results.startY   = iLineSegment.StartY;
                        mFindLineTool_Results.endX     = iLineSegment.EndX;
                        mFindLineTool_Results.endY     = iLineSegment.EndY;
                        return(true);
                    }
                    else
                    {
                        SaveLog.Msg_("iLine or iLineSegment is null!");
                        return(false);
                    }
                }
                else
                {
                    SaveLog.Msg_("FindLineTool Doesn't have any result!");
                    return(false);
                    //MessageBox.Show("Didn't find any line");
                }
            }
            catch (Exception ex)
            {
                SaveLog.Msg_("FindLineTool make_results Failed : " + ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString());
                return(false);
            }
        }
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //추가 :
        //목적 : 라인 설정
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void SetCreateLine()
        {
            do
            {
                // 메인 디스플레이에 이미지 있는 경우에만
                if (null == m_objCogDisplayMain.Image)
                {
                    break;
                }

                CogLine obj = m_objCreateLineTool.Line;
                // 없는 경우 새로 생성
                if (null == obj)
                {
                    obj             = new CogLine();
                    obj.Interactive = true;
                    obj.Color       = CogColorConstants.Green;
                }
                m_objCogDisplayMain.InteractiveGraphics.Add(obj, "", false);
            } while(false);
        }
Exemplo n.º 7
0
        public void Show()
        {
            string ProcID = System.Reflection.MethodInfo.GetCurrentMethod().Name.ToString();

            try
            {
                if (mFindLineTool.Results != null)
                {
                    CogLine iLine = mFindLineTool.Results.GetLine();
                    MessageBox.Show("X=" + iLine.X + "\nY=" + iLine.Y);
                }
                else
                {
                    MessageBox.Show("Didn't find any line");
                }
            }
            catch (Exception ex)
            {
                SaveLog.Msg_("FindLineTool ROI_create Failed : " + ModularID + ":\r\n" + ProcID + ":\r\n" + ex.ToString());
            }
        }
Exemplo n.º 8
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : 초기화
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLInitialize(HLDevice.Abstract.CVisionLibraryAbstract.CInitializeParameter objInitializeParameter)
        {
            bool bReturn = false;

            do
            {
                m_objResultLine        = new CogLine();
                m_objResultLineSegment = new CogLineSegment();
                m_objGraphics          = new CogCompositeShape();

                m_objFindLineTool = new CogFindLineTool();

                m_iIndex = m_objInitializeParameter.iIndex;
                m_objInitializeParameter = ( CInitializeParameter )objInitializeParameter.Clone();
                HLLoadRecipe(m_objInitializeParameter.strRecipePath, m_objInitializeParameter.strRecipeName);

                bReturn = true;
            } while(false);

            return(bReturn);
        }
Exemplo n.º 9
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : 초기화
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public override bool HLInitialize(HLDevice.Abstract.CVisionLibraryAbstract.CInitializeParameter objInitializeParameter)
        {
            bool bReturn = false;

            do
            {
                m_objInitializeParameter = (HLDevice.Abstract.CVisionLibraryAbstract.CInitializeParameter)objInitializeParameter.Clone();

                m_objFindLineTool      = new CogFindLineTool[( int )CResultData.enumLine.LINE_FINAL];
                m_objResultLine        = new CogLine[( int )CResultData.enumLine.LINE_FINAL];
                m_objResultLineSegment = new CogLineSegment[( int )CResultData.enumLine.LINE_FINAL];
                m_objLineGraphics      = new CogCompositeShape[( int )CResultData.enumLine.LINE_FINAL];

                m_dLinePositionX = new double[( int )CResultData.enumLine.LINE_FINAL];
                m_dLinePositionY = new double[( int )CResultData.enumLine.LINE_FINAL];
                m_dLineAngle     = new double[( int )CResultData.enumLine.LINE_FINAL];


                for (int iLoopCount = 0; iLoopCount < ( int )CResultData.enumLine.LINE_FINAL; iLoopCount++)
                {
                    m_objFindLineTool[iLoopCount]      = new CogFindLineTool();
                    m_objResultLine[iLoopCount]        = new CogLine();
                    m_objResultLineSegment[iLoopCount] = new CogLineSegment();
                    m_objLineGraphics[iLoopCount]      = new CogCompositeShape();
                }

                m_objIntersectTool = new CogIntersectLineLineTool();

                m_iIndex = m_objInitializeParameter.iIndex;
                m_objInitializeParameter = ( CInitializeParameter )objInitializeParameter.Clone();
                HLLoadRecipe(m_objInitializeParameter.strRecipePath, m_objInitializeParameter.strRecipeName);

                bReturn = true;
            } while(false);

            return(bReturn);
        }
Exemplo n.º 10
0
        private void BtnRun_Click(object sender, EventArgs e)
        {
            var pDocument = CDocument.GetDocument;

            do
            {
                try {
                    m_objFindLineToolTop.Run();
                    m_objFindLineToolBottom.Run();

                    m_objCogDisplayMain.InteractiveGraphics.Clear();
                    m_objCogDisplayMain.StaticGraphics.Clear();

                    bool bResultTop    = false;
                    bool bResultBottom = false;
                    if (null != m_objFindLineToolTop.Results && 0 < m_objFindLineToolTop.Results.Count)
                    {
                        for (int iLoopCount = 0; iLoopCount < m_objFindLineToolTop.Results.Count; iLoopCount++)
                        {
                            m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolTop.Results[iLoopCount].CreateResultGraphics(CogFindLineResultGraphicConstants.DataPoint | CogFindLineResultGraphicConstants.TipText), "");
                            m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolTop.Results.GetLine(), "");
                        }
                        bResultTop = true;
                    }

                    if (null != m_objFindLineToolBottom.Results && 0 < m_objFindLineToolBottom.Results.Count)
                    {
                        for (int iLoopCount = 0; iLoopCount < m_objFindLineToolBottom.Results.Count; iLoopCount++)
                        {
                            m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolBottom.Results[iLoopCount].CreateResultGraphics(CogFindLineResultGraphicConstants.DataPoint | CogFindLineResultGraphicConstants.TipText), "");
                            m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolBottom.Results.GetLine(), "");
                        }
                        bResultBottom = true;
                    }

                    if (false == bResultTop || false == bResultBottom)
                    {
                        break;
                    }

                    CogLine objCogLine = new CogLine();
                    objCogLine.SelectedSpaceName = "#";
                    objCogLine.SetXYRotation(m_objListImage[m_iPositionCrop].Width / 2, 0, 90 * (Math.PI / 180));
                    m_objCogDisplayMain.StaticGraphics.Add(objCogLine, "");

                    double dPositionXTop    = 0;
                    double dPositionYTop    = 0;
                    double dPositionXBottom = 0;
                    double dPositionYBottom = 0;

                    CogIntersectLineLineTool objIntersectLine = new CogIntersectLineLineTool();
                    objIntersectLine.InputImage = m_objListImage[m_iPositionCrop];
                    objIntersectLine.LineA      = m_objFindLineToolTop.Results.GetLine();
                    objIntersectLine.LineB      = objCogLine;
                    objIntersectLine.Run();
                    dPositionXTop = objIntersectLine.X;
                    dPositionYTop = objIntersectLine.Y;

                    objIntersectLine.LineA = m_objFindLineToolBottom.Results.GetLine();
                    objIntersectLine.LineB = objCogLine;
                    objIntersectLine.Run();
                    dPositionXBottom = objIntersectLine.X;
                    dPositionYBottom = objIntersectLine.Y;

                    CogDistancePointPointTool objDistance = new CogDistancePointPointTool();
                    objDistance.InputImage = m_objListImage[m_iPositionCrop];
                    objDistance.StartX     = dPositionXTop;
                    objDistance.StartY     = dPositionYTop;
                    objDistance.EndX       = dPositionXBottom;
                    objDistance.EndY       = dPositionYBottom;
                    objDistance.Run();

                    CogGraphicLabel objLabel = new CogGraphicLabel();
                    objLabel.SelectedSpaceName = "#";
                    objLabel.Alignment         = CogGraphicLabelAlignmentConstants.BottomLeft;
                    double dDistance = objDistance.Distance * pDocument.m_objConfig.GetCameraParameter(( int )CDefine.enumCamera.CAMERA_1).dResolution;
                    objLabel.SetXYText(m_objListImage[m_iPositionCrop].Width / 2, 0, string.Format("DISTANCE : {0:F2}", dDistance));
                    m_objCogDisplayMain.StaticGraphics.Add(objLabel, "");
                } catch (Exception ex) {
                    pDocument.SetUpdateLog(CDefine.enumLogType.LOG_VISION_EXCEPTION_CAMERA_0, "CDialogFindLineSetting - Reload : " + ex.ToString());
                }
            } while(false);
        }