示例#1
0
        private ToolResult ApplyMetrology(HMetrologyModel hMetrology, int index, string measureName)
        {
            HiPerfTimer timer = new HiPerfTimer();

            timer.Start();
            try
            {
                //window.DisplayImage(image);
                hMetrology.ApplyMetrologyModel(Image);
                ///获取直线的中心坐标
                ///lineresult 为获取到的直线起点与终点坐标
                double lineCenterRow, lineCenterCol, angle;
                HTuple lineResult = hMetrology.GetMetrologyObjectResult(new HTuple("all"), new HTuple("all"), new HTuple("result_type"), new HTuple("all_param"));

                lineCenterRow = (lineResult[0].D + lineResult[2]).D / 2;
                lineCenterCol = (lineResult[1].D + lineResult[3]).D / 2;
                //获取直线测量矩形
                angle = HMisc.LineOrientation(lineResult[0].D, lineResult[1].D, lineResult[2].D, lineResult[3].D);
                angle = TransAngle.HuToAngle(angle);
                hMetrology.ClearMetrologyObject(new HTuple(index));

                Window.DisplaySingleLine(info.ToolName, lineResult[0].D, lineResult[1].D, lineResult[2].D, lineResult[3].D, true, "blue");
                if (info.IsShowFindRegion)
                {
                    Window.DisplayRectangle2(info.ToolName, info.Rectangle2Row, info.Rectangle2Col, info.Rectangle2Angle, info.Rectangle2Length1, info.Rectangle2Length2, true);
                }
                return(new ToolResult()
                {
                    ResultName = measureName, ImageX = lineCenterCol, ImageY = lineCenterRow, ImageAngle = angle, GetResultTime = DateTime.Now, ElapsedTime = timer.Duration, IsSuccess = true
                });
            }
            catch (Exception e)
            {
                WriteErrorLog("VisionTool", e.ToString());
                return(new ToolResult()
                {
                    ResultName = measureName, Errormessage = e.ToString(), GetResultTime = DateTime.Now, IsSuccess = false
                });
            }
        }