Exemplo n.º 1
0
        /// <summary>
        /// Related Edge Finder (Caliper Tool) Operations
        /// </summary>
        /// <param name="iCamNo"></param>
        /// <param name="dPosX"></param>
        /// <param name="dPosY"></param>
        /// <returns></returns>
        public int FindEdge(int iCamNo, ref CEdgeData pEdgeData)
        {
#if SIMULATION_VISION
            return SUCCESS;
#endif
            // Vision System이 초기화 된지를 확인함
            if (m_bSystemInit == false) return GenerateErrorCode(ERR_VISION_SYSTEM_FAIL);

            // Edge Find 지령
            m_RefComp.System.FindEdge(iCamNo,ref pEdgeData);

            if(pEdgeData.m_bSuccess)
            {
                pEdgeData.m_strResult = "";
                for (int i = 0;  i < pEdgeData.m_iEdgeNum; i++)
                {
                    pEdgeData.m_strResult = pEdgeData.m_strResult + string.Format("-Edge No:{0} P_X:{1:0.00}  P_Y:{2:0.00} \n",
                                                    i+1,
                                                    pEdgeData.m_dPosX[i],
                                                    pEdgeData.m_dPosY[i]);

                }

                pEdgeData.m_strResult = "Edge Search OK \n" + pEdgeData.m_strResult;
                


            }
            else
            {
                pEdgeData.m_strResult = "Edge Search Fail";
            }

            return SUCCESS;
        }
Exemplo n.º 2
0
        private void btnEdgeFind_Click(object sender, EventArgs e)
        {
            int iCamNo = CMainFrame.LWDicer.m_Vision.m_iCurrentViewNum;

            CEdgeData mEdgeData = new CEdgeData();

            CMainFrame.LWDicer.m_Vision.SetEdgeFinderArea(iCamNo);
            CMainFrame.LWDicer.m_Vision.FindEdge(iCamNo, ref mEdgeData);

            lblResult.Text = mEdgeData.m_strResult;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Edge를 찾음
        /// dPosX,dPosY에 검출된 값을 보내줌
        /// </summary>
        /// <param name="iCam"></param>
        /// <param name="dPosX"></param>
        /// <param name="dPosY"></param>
        /// <returns></returns>
        public int FindEdge(int iCam, ref CEdgeData pEdgeData)
        {
            // Edge 검출 설정이 되어 있는지를 확인함.
            if (m_EdgeMaker == MIL.M_NULL)
            {
                return(ERR_VISION_ERROR);
            }

            // 검출할 영상 Image를 가져온다.
            MIL_ID m_MilImage = m_pDisplay[iCam].GetImage();
            // 결과를 Display할 Overlay를 가져온다.
            MIL_ID m_DisplayGraph = m_pDisplay[iCam].GetViewGraph();

            // Find the marker and compute all applicable measurements.
            // Edge검출 명령 실행
            MIL.MmeasFindMarker(MIL.M_DEFAULT, m_MilImage, m_EdgeMaker, MIL.M_DEFAULT);

            // Overlay Clear
            MIL.MgraClear(MIL.M_DEFAULT, m_DisplayGraph);

            // Edge 검출 영역을  Overlay에 표시함
            MIL.MgraColor(MIL.M_DEFAULT, MIL.M_COLOR_GREEN);
            MIL.MmeasDraw(MIL.M_DEFAULT, m_EdgeMaker, m_DisplayGraph, MIL.M_DRAW_SEARCH_REGION, MIL.M_DEFAULT, MIL.M_RESULT);

            // Edge 개수 확인
            MIL_INT FindEdgeNum = 0;

            MIL.MmeasGetResult(m_EdgeMaker, MIL.M_NUMBER + MIL.M_TYPE_MIL_INT, ref FindEdgeNum, MIL.M_NULL);
            // Edge 검출 되었을 경우
            if (FindEdgeNum >= 1)
            {
                pEdgeData.m_bSuccess = true;
                pEdgeData.m_iEdgeNum = FindEdgeNum;
                pEdgeData.m_dPosX    = new double[FindEdgeNum];
                pEdgeData.m_dPosY    = new double[FindEdgeNum];

                // 검출된 Edge를 Overlay에 표시함.
                MIL.MgraColor(MIL.M_DEFAULT, MIL.M_COLOR_RED);
                MIL.MmeasDraw(MIL.M_DEFAULT, m_EdgeMaker, m_DisplayGraph, MIL.M_DRAW_POSITION, MIL.M_DEFAULT, MIL.M_RESULT);
                MIL.MmeasGetResult(m_EdgeMaker, MIL.M_POSITION + MIL.M_EDGE_FIRST, ref pEdgeData.m_dPosX[0], ref pEdgeData.m_dPosY[0]);

                return(SUCCESS);
            }
            else
            {
                pEdgeData.m_bSuccess = false;
                //pEdgeData.m_dPosX = 0.0;
                //pEdgeData.m_dPosY = 0.0;
                pEdgeData.m_iEdgeNum = 0;
                return(GenerateErrorCode(ERR_VISION_EDGE_SEARCH_FAIL));
            }
        }