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; }
/// <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; }
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); }
/// <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); } }
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(); } }
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>()); } }
public EuresysPatternMatcher(EMatcher eMatcher) { this.EMatcher_ = eMatcher; }
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); }