From fec341de45f4b3fd1825807f0b3261143fa13caa Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期一, 29 十二月 2025 17:03:45 +0800
Subject: [PATCH] 修复部分显示工具为面向对象。

---
 LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs |  228 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 116 insertions(+), 112 deletions(-)

diff --git a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
index bcfa800..f914bb9 100644
--- a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
+++ b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
@@ -144,61 +144,62 @@
 
                 if (Subject.InputImage != null && Subject.InputImage is Mat)
                 {
-                    TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
-                    inputImageHSmartWindowControl.ShowHoImage(image);
-                }
-
-                Type type = Subject.Params.ROI?.GetType();
-                if (Subject.Params.ROI != null)
-                {
-                    switch (type)
+                    using (HImage image = TAlgorithm.Mat2HImage((Mat)Subject.InputImage))
                     {
-                        case Type t when t == typeof(HRectangle2):
-                            cmbTypeRoi.Text = RoiType.Rectangle2.ToString();
-                            break;
-                        case Type t when t == typeof(HCircle):
-                            cmbTypeRoi.Text = RoiType.Circle.ToString();
-                            break;
-                        case Type t when t == typeof(HSegment):
-                            cmbTypeRoi.Text = RoiType.Segment.ToString();
-                            break;
-                        default:
-                            cmbTypeRoi.Text = RoiType.None.ToString();
-                            break;
+                        inputImageHSmartWindowControl.ShowHoImage(image);
+                        Type type = Subject.Params.ROI?.GetType();
+                        if (Subject.Params.ROI != null)
+                        {
+                            switch (type)
+                            {
+                                case Type t when t == typeof(HRectangle2):
+                                    cmbTypeRoi.Text = RoiType.Rectangle2.ToString();
+                                    break;
+                                case Type t when t == typeof(HCircle):
+                                    cmbTypeRoi.Text = RoiType.Circle.ToString();
+                                    break;
+                                case Type t when t == typeof(HSegment):
+                                    cmbTypeRoi.Text = RoiType.Segment.ToString();
+                                    break;
+                                default:
+                                    cmbTypeRoi.Text = RoiType.None.ToString();
+                                    break;
+                            }
+                            if (cmbTypeRoi.Text.ToString() != "None")
+                                ckbDrawRoi.Checked = true;
+                            else
+                                ckbDrawRoi.Checked = false;
+
+                            inputImageHSmartWindowControl.oRoi = Subject.Params.ROI;
+                        }
+
+                        if (Subject.Params.Fixture != null)
+                            cmbFixture.Text = Subject.Params.Fixture.strName;
+                        else
+                            cmbFixture.Text = "";
+
+                        switch (type)
+                        {
+                            case Type t when t == typeof(HRectangle2):
+                                inputImageHSmartWindowControl.oRoi
+                                     = new HRectangle2(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
+                                     , Subject.Params.ROI.Phi + Subject.Params.Fixture.Phi, ((HRectangle2)Subject.Params.ROI).Width, ((HRectangle2)Subject.Params.ROI).Height);
+                                break;
+                            case Type t when t == typeof(HCircle):
+                                inputImageHSmartWindowControl.oRoi
+                                = new HCircle(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
+                                , ((HCircle)Subject.Params.ROI).Radius);
+                                break;
+                            case Type t when t == typeof(HSegment):
+                                inputImageHSmartWindowControl.oRoi
+                                = new HSegment(((HSegment)Subject.Params.ROI).StartX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).StartY + Subject.Params.Fixture.Y
+                                , ((HSegment)Subject.Params.ROI).EndX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).EndY + Subject.Params.Fixture.Y);
+                                break;
+                            default:
+                                inputImageHSmartWindowControl.oRoi = null;
+                                break;
+                        }
                     }
-                    if (cmbTypeRoi.Text.ToString() != "None")
-                        ckbDrawRoi.Checked = true;
-                    else
-                        ckbDrawRoi.Checked = false;
-
-                    inputImageHSmartWindowControl.oRoi = Subject.Params.ROI;
-                }
-
-                if (Subject.Params.Fixture != null)
-                    cmbFixture.Text = Subject.Params.Fixture.strName;
-                else
-                    cmbFixture.Text = "";
-
-                switch (type)
-                {
-                    case Type t when t == typeof(HRectangle2):
-                        inputImageHSmartWindowControl.oRoi
-                             = new HRectangle2(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
-                             , Subject.Params.ROI.Phi + Subject.Params.Fixture.Phi, ((HRectangle2)Subject.Params.ROI).Width, ((HRectangle2)Subject.Params.ROI).Height);
-                        break;
-                    case Type t when t == typeof(HCircle):
-                        inputImageHSmartWindowControl.oRoi
-                        = new HCircle(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
-                        , ((HCircle)Subject.Params.ROI).Radius);
-                        break;
-                    case Type t when t == typeof(HSegment):
-                        inputImageHSmartWindowControl.oRoi
-                        = new HSegment(((HSegment)Subject.Params.ROI).StartX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).StartY + Subject.Params.Fixture.Y
-                        , ((HSegment)Subject.Params.ROI).EndX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).EndY + Subject.Params.Fixture.Y);
-                        break;
-                    default:
-                        inputImageHSmartWindowControl.oRoi = null;
-                        break;
                 }
             }));
         }
@@ -258,27 +259,27 @@
 
                 if (Subject.InputImage != null && Subject.InputImage is Mat)
                 {
-                    TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
-                    HOperatorSet.GetImageSize(image, out HTuple ho_ImageWidth, out HTuple ho_ImageHeight);
-                    recordImageHSmartWindowControl.ShowHoImage(image);
-                }
+                    using (HImage image = TAlgorithm.Mat2HImage((Mat)Subject.InputImage))
+                    {
+                        image.GetImageSize(out HTuple ho_ImageWidth, out HTuple ho_ImageHeight);
+                        recordImageHSmartWindowControl.ShowHoImage(image);
+                        //鍏堝垽鏂瓙绫诲啀鍒ゆ柇鐖剁被
+                        if (Subject.Record != null && Subject.Record is MsgRecord msgRecord)
+                        {
+                            recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_OK, true);
+                            recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_NG, false);
 
-                //鍏堝垽鏂瓙绫诲啀鍒ゆ柇鐖剁被
-                if (Subject.Record != null && Subject.Record is MsgRecord msgRecord)
-                {
-                    recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_OK, true);
-                    recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_NG, false);
-
-                    for (int i = 0; i < msgRecord.Msg.Length; i++)
-                        recordImageHSmartWindowControl.ShowMsg(msgRecord.Msg[i]
-                            , 1 == msgRecord.Result[i] ? true : false, msgRecord.Column[i], msgRecord.Row[i]);
+                            for (int i = 0; i < msgRecord.Msg.Length; i++)
+                                recordImageHSmartWindowControl.ShowMsg(msgRecord.Msg[i]
+                                    , 1 == msgRecord.Result[i] ? true : false, msgRecord.Column[i], msgRecord.Row[i]);
+                        }
+                        else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord)
+                        {
+                            recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true);
+                            recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false);
+                        }
+                    }
                 }
-                else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord)
-                {
-                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true);
-                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false);
-                }
-
                 GC.Collect();
             }));
         }
@@ -345,28 +346,30 @@
                     HTuple hv_imageHeight = 0;
                     if (InputImage != null && InputImage is Mat)
                     {
-                        TAlgorithm.Mat2HObject((Mat)InputImage, out HObject image);
-                        HOperatorSet.GetImageSize(image, out hv_imageWidth, out hv_imageHeight);
-                    }
-                    switch (type)
-                    {
-                        case RoiType.Rectangle2:
-                            inputImageHSmartWindowControl.oRoi
-                                = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0
-                                , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
-                            break;
-                        case RoiType.Circle:
-                            inputImageHSmartWindowControl.oRoi
-                                = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4);
-                            break;
-                        case RoiType.Segment:
-                            inputImageHSmartWindowControl.oRoi
-                                = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
-                            break;
-                        case RoiType.None:
-                        default:
-                            inputImageHSmartWindowControl.oRoi = null;
-                            break;
+                        using (HImage image=TAlgorithm.Mat2HImage((Mat)InputImage))
+                        {
+                            image.GetImageSize(out hv_imageWidth, out hv_imageHeight);
+                            switch (type)
+                            {
+                                case RoiType.Rectangle2:
+                                    inputImageHSmartWindowControl.oRoi
+                                        = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0
+                                        , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                                    break;
+                                case RoiType.Circle:
+                                    inputImageHSmartWindowControl.oRoi
+                                        = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4);
+                                    break;
+                                case RoiType.Segment:
+                                    inputImageHSmartWindowControl.oRoi
+                                        = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                                    break;
+                                case RoiType.None:
+                                default:
+                                    inputImageHSmartWindowControl.oRoi = null;
+                                    break;
+                            }
+                        }
                     }
                 }
             }
@@ -397,25 +400,26 @@
 
                     if (InputImage != null && InputImage is Mat)
                     {
-                        TAlgorithm.Mat2HObject((Mat)InputImage, out HObject image);
-                        inputImageHSmartWindowControl.ShowHoImage(image);
+                        using (HImage image = TAlgorithm.Mat2HImage((Mat)InputImage))
+                        {
+                            inputImageHSmartWindowControl.ShowHoImage(image);
+                            int hv_Elements = Convert.ToInt16(itxtCaliperCount.Text);
+                            double hv_DetectHeight = Convert.ToDouble(dtxtCaliperHeight.Text);
+                            double hv_DetectWidth = Convert.ToDouble(dtxtCaliperWidth.Text);
+
+                            double hv_Row1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginRow + Subject.Params.Fixture.Row);
+                            double hv_Column1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginColumn + Subject.Params.Fixture.Column);
+                            double hv_Row2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndRow + Subject.Params.Fixture.Row);
+                            double hv_Column2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndColumn + Subject.Params.Fixture.Column);
+
+                            TAlgorithm.GetRakeRegions(null, out HObject ho_Regions, hv_Elements, hv_DetectHeight, hv_DetectWidth
+                                , new HTuple(), new HTuple(), new HTuple(), new HTuple()
+                                , hv_Row1, hv_Column1, hv_Row2, hv_Column2
+                                , out HTuple hv_ResultRow, out HTuple hv_ResultColumn);
+
+                            inputImageHSmartWindowControl.DispObj(ho_Regions);
+                        }
                     }
-
-                    int hv_Elements = Convert.ToInt16(itxtCaliperCount.Text);
-                    double hv_DetectHeight = Convert.ToDouble(dtxtCaliperHeight.Text);
-                    double hv_DetectWidth = Convert.ToDouble(dtxtCaliperWidth.Text);
-
-                    double hv_Row1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginRow + Subject.Params.Fixture.Row);
-                    double hv_Column1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginColumn + Subject.Params.Fixture.Column);
-                    double hv_Row2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndRow + Subject.Params.Fixture.Row);
-                    double hv_Column2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndColumn + Subject.Params.Fixture.Column);
-
-                    TAlgorithm.GetRakeRegions(null, out HObject ho_Regions, hv_Elements, hv_DetectHeight, hv_DetectWidth
-                        , new HTuple(), new HTuple(), new HTuple(), new HTuple()
-                        , hv_Row1, hv_Column1, hv_Row2, hv_Column2
-                        , out HTuple hv_ResultRow, out HTuple hv_ResultColumn);
-
-                    inputImageHSmartWindowControl.DispObj(ho_Regions);
                 }
                 catch { }
             }));

--
Gitblit v1.9.3