Пример #1
0
 private void MoudleFrm_Load(object sender, EventArgs e)
 {
     roi = new EROIBW8();
     roi.SetPlacement(100, 100, 300, 300);
     mPicBox1.MRois.Add(roi);
     HideTabTitle(tabControl1);
     match             = new EMatcher();
     find              = new EPatternFinder();
     find.ContrastMode = EFindContrastMode.Normal;
 }
Пример #2
0
 /// <summary>
 /// 初始化匹配
 /// </summary>
 private void InitMatch()
 {
     m_match = new EMatcher();
     m_match.MaxPositions = 1;//结果数量
     m_match.MaxScaleX    = 1.10f;
     m_match.MaxScaleY    = 1.10f;
     m_match.MinScaleX    = 0.90f;
     m_match.MinScaleY    = 1;
     //m_match.MinAngle = 0;
     //m_match.MaxAngle = 200;
     m_match.MinScore = 0.5f;
 }
Пример #3
0
 public override void Initialize()
 {
     Roi = new EROIBW8();
     Roi.SetPlacement(0, 0, 300, 300);
     Matcher         = new EMatcher();
     Finder          = new EPatternFinder();
     ResultData.Name = matcherConfig.ToolName;
     ResultData.ValueParams.Clear();
     ResultData.ValueParams.Add("数量", new float[] { 0 });
     ResultData.ValueParams.Add("中心X", new float[] { 0 });
     ResultData.ValueParams.Add("中心Y", new float[] { 0 });
     ResultData.ValueParams.Add("角度", new float[] { 0 });
     ParentTask.ResultDatas.Add(ResultData);
 }
Пример #4
0
        /// <summary>
        /// 初始化匹配
        /// </summary>
        /// <param name="strTemplateFile">模版文件</param>
        internal void InitMatch(string strTemplateFile)
        {
            m_match = new EMatcher();
            m_match.MaxPositions = 1;//结果数量
            m_match.MaxScaleX    = 1.10f;
            m_match.MaxScaleY    = 1.10f;
            m_match.MinScaleX    = 0.90f;
            m_match.MinScaleY    = 1;
            //m_match.MinAngle = 0;
            //m_match.MaxAngle = 200;
            m_match.MinScore = GlobalVar.MinScore;

            if (!string.IsNullOrEmpty(strTemplateFile) && File.Exists(strTemplateFile))
            {
                m_match.Load(strTemplateFile);
            }
        }
Пример #5
0
 private void initEvision()
 {
     try
     {
         MatrixDecode      decoder = new MatrixDecode();
         EMatrixCode       EMatrixCodeReaderResult = new EMatrixCode();
         EMatrixCodeReader EMatrixCodeReader1      = new EMatrixCodeReader();
         EMatcher          match    = new EMatcher();
         Bitmap            bmp      = new Bitmap(640, 480);
         EImageBW8         bw8image = ConvertBitmapToEImageBW8(bmp);
     }
     catch { }
     finally
     {
         this.DialogResult = DialogResult.OK;
         //startMain.Set();
     }
 }
Пример #6
0
        public List <PositionInfo> ShapeMatch(Bitmap bmp)
        {
            List <PositionInfo> _Resultlist = new List <PositionInfo>();

            try
            {
                string   MCH_matchFile = GlobalVar.gl_matchFileName;
                EMatcher EMatch1       = new EMatcher();
                //單反相機需要用ec24
                EImageBW8 bw8image = ConvertBitmapToEImageBW8(bmp);
                EMatch1.Load(MCH_matchFile);

                EMatch1.MaxPositions = 10;
                EMatch1.MinScore     = GlobalVar.gl_MinMatchScore * 1.00f / 100;
                EMatch1.Match(bw8image);
                for (int i = 0; i < EMatch1.NumPositions; i++)
                {
                    PositionInfo   info = new PositionInfo();
                    EMatchPosition pos  = EMatch1.GetPosition(i);
                    info.CenterX         = pos.CenterX;
                    info.CenterY         = pos.CenterY;
                    info.angle           = pos.Angle;
                    info.scaleX          = pos.ScaleX;
                    info.scaleY          = pos.ScaleY;
                    info.score           = pos.Score;
                    info.MCHPatterWidth  = EMatch1.PatternWidth;
                    info.MCHPatterHeight = EMatch1.PatternHeight;
                    _Resultlist.Add(info);
                }
                return(_Resultlist);
            }
            catch (EException)
            {
                return(new List <PositionInfo>());
            }
        }
Пример #7
0
 public EuresysPatternMatcher(EMatcher eMatcher)
 {
     this.EMatcher_ = eMatcher;
 }
Пример #8
0
 public EuresysDoublePatternMatcher(EMatcher eMatcher1, EMatcher eMatcher2)
 {
     this.EMatcher1_ = eMatcher1;
     this.EMatcher2_ = eMatcher2;
 }
        public static bool TeachTeacherROI(
            string RecipeName,
            EuresysDoublePatternMatcher PatternMatcher_,
            PatternMatcherParameters PatternMatcherParameters_,
            EROIBW8 eROIForPatternTeaching1_,
            EROIBW8 eROIForPatternTeaching2_,
            iEuresysROI MatcherEROI,
            PointF WaferCenterPoint,
            WaferOrientation patternOrientation)
        {
            string PatternFilePath_One      = PatternMatcherParameterHelper.GetLeftPatternFilePath(RecipeName);
            string PatternFilePath_Two      = PatternMatcherParameterHelper.GetRightPatternFilePath(RecipeName);
            string PatternImageFilePath_One = PatternMatcherParameterHelper.GetLeftPatternImageFilePath(RecipeName);
            string PatternImageFilePath_Two = PatternMatcherParameterHelper.GetRightPatternImageFilePath(RecipeName);

            PatternMatcher_.TeachAndSaveEMatcher(
                PatternMatcherParameters_,
                eROIForPatternTeaching1_,
                eROIForPatternTeaching2_,
                PatternFilePath_One,
                PatternFilePath_Two,
                PatternImageFilePath_One,
                PatternImageFilePath_Two);

            if (PatternMatcher_.Pattern1.IsVoid)
            {
                goto Fail;
            }
            if (PatternMatcher_.Pattern2.IsVoid)
            {
                goto Fail;
            }

            // Match
            EROIBW8 matcherROI = MatcherEROI.GetROI(0);

            PatternMatcher_.MatchPatterns(matcherROI);

            EMatcher eMatcher1 = PatternMatcher_.EMatcher1;
            EMatcher eMatcher2 = PatternMatcher_.EMatcher2;

            if (eMatcher1.NumPositions != 1)
            {
                string errorMessage = "Pattern 1: Number of patterns matched is not equal to one";
                VisionLogger.Log(LogType.Exception, "PatternMatcherManager", errorMessage);
                VisionNotifier.AddNotification(errorMessage);
                goto Fail;
            }

            if (eMatcher2.NumPositions != 1)
            {
                string errorMessage = "Pattern 2: Number of patterns matched is not equal to one";
                VisionLogger.Log(LogType.Exception, "PatternMatcherManager", errorMessage);
                VisionNotifier.AddNotification(errorMessage);
                goto Fail;
            }

            EROIBW8 matcherEROI_1 = MatcherEROI.GetROI(0);

            float OriginalXPos_pattern1 = eMatcher1.GetPosition(0).CenterX + (matcherEROI_1.OrgX);
            float OriginalYPos_pattern1 = eMatcher1.GetPosition(0).CenterY + (matcherEROI_1.OrgY);
            float OriginalXPos_pattern2 = eMatcher2.GetPosition(0).CenterX + (matcherEROI_1.OrgX);
            float OriginalYPos_pattern2 = eMatcher2.GetPosition(0).CenterY + (matcherEROI_1.OrgY);
            float WaferCenterXPos       = WaferCenterPoint.X;
            float WaferCenterYPos       = WaferCenterPoint.Y;

            PointF p1 = new PointF(OriginalXPos_pattern1, OriginalYPos_pattern1);
            PointF p2 = new PointF(OriginalXPos_pattern2, OriginalYPos_pattern2);
            float  PatternDefaultAngleOffset = (float)CalculateAngleBetween3Points.Execute(
                p1,
                p2,
                WaferCenterPoint,
                0,
                true,
                patternOrientation);

            // Replace value
            PatternMatcherParameters_.OriginalXPos_pattern1 = OriginalXPos_pattern1;
            PatternMatcherParameters_.OriginalYPos_pattern1 = OriginalYPos_pattern1;
            PatternMatcherParameters_.OriginalXPos_pattern2 = OriginalXPos_pattern2;
            PatternMatcherParameters_.OriginalYPos_pattern2 = OriginalYPos_pattern2;
            PatternMatcherParameters_.WaferCenterXPos       = WaferCenterXPos;
            PatternMatcherParameters_.WaferCenterYPos       = WaferCenterYPos;
            PatternMatcherParameters_.DefaultAngleOffset    = PatternDefaultAngleOffset;
            return(true);

Fail:
            return(false);
        }