/// <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(); })); }
// 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, ""); }
// 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, ""); }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //생성 : //수정 : //목적 : 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); }
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); }
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()); } }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //생성 : //수정 : //목적 : 초기화 //설명 : ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //생성 : //수정 : //목적 : 초기화 //설명 : ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
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); }