From eb3e5c90006ab2b1b485000e7622941ff11a2b51 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期四, 25 十二月 2025 16:07:17 +0800
Subject: [PATCH] ”修复log显示以及文件大小问题。“

---
 LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs |  391 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 205 insertions(+), 186 deletions(-)

diff --git a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
index 392ee61..5e2e2df 100644
--- a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
+++ b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
@@ -241,64 +241,66 @@
 
                 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.Mat2HObject((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;
+                        }
+
+                        ShowModel(((FindModelTool)Subject).ModelID);
+
                     }
-                    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;
-                }
-
-                ShowModel(((FindModelTool)Subject).ModelID);
             }));
         }
 
@@ -357,25 +359,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.Mat2HObject((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]);
+                        }
+                        else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord)
+                        {
+                            recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true);
+                            recordImageHSmartWindowControl.DispObj(objRecord.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]);
-                }
-                else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord)
-                {
-                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true);
-                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false);
+                    }
                 }
 
                 GC.Collect();
@@ -498,28 +502,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.Mat2HObject((Mat)InputImage))
+                        {
+                            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;
+                            }
+                        }
                     }
                 }
             }
@@ -1096,13 +1102,14 @@
             if (InputImage != null && InputImage is Mat)
             {
                 imgTabControl.SelectedTab = tabPageModelImage;
-                TAlgorithm.Mat2HObject((Mat)InputImage, out HObject hoDomainImage);
-
-                HOperatorSet.GetImageSize(hoDomainImage, out HTuple hv_imageWidth, out HTuple hv_imageHeight);
-                createModelImageHSmartWindowControl.ShowHoImage((HObject)hoDomainImage);
-                createModelImageHSmartWindowControl.bAollowDraw = true;
-                createModelImageHSmartWindowControl.oRoi = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2
-                    , 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                using (HImage hoDomainImage = TAlgorithm.Mat2HObject((Mat)InputImage))
+                {
+                    HOperatorSet.GetImageSize(hoDomainImage, out HTuple hv_imageWidth, out HTuple hv_imageHeight);
+                    createModelImageHSmartWindowControl.ShowHoImage((HObject)hoDomainImage);
+                    createModelImageHSmartWindowControl.bAollowDraw = true;
+                    createModelImageHSmartWindowControl.oRoi = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2
+                        , 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                }
             }
         }
 
@@ -1113,7 +1120,6 @@
                 if (InputImage != null && InputImage is Mat)
                 {
                     double result = 0;
-
                     if (Enum.TryParse(cmbModelType.Text, out ModelType modelType))
                     {
                         string NumLevels = this.dtxtModelParam1.Text;
@@ -1131,75 +1137,83 @@
                         string Contrast = this.dtxtModelParam11.Text;
                         int MinContrast = Convert.ToInt16(this.dtxtModelParam12.Text);
                         HRectangle2 ROI = (HRectangle2)createModelImageHSmartWindowControl.oRoi;
-
-                        HOperatorSet.GenRectangle2(out HObject hRectangle, ROI.Row, ROI.Column, ROI.Phi, ROI.SemiLength1, ROI.SemiLength2);
-                        TAlgorithm.Mat2HObject((Mat)InputImage, out HObject hoDomainImage);
-                        HTuple hv_Channels = new HTuple();
-                        //鍒ゆ柇鏄惁涓虹伆搴﹀浘
-                        using (HDevDisposeHelper dh = new HDevDisposeHelper())
+                        using (HRegion hRectangle = new HRegion())
                         {
-                            try
+                            hRectangle.GenRectangle2(ROI.Row, ROI.Column, ROI.Phi, ROI.SemiLength1, ROI.SemiLength2);
+                            using (HImage hoDomainImage = TAlgorithm.Mat2HObject((Mat)InputImage))
                             {
-                                HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
-                                if (hv_Channels.TupleInt() != 1)
-                                    HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
+                                HTuple hv_Channels = new HTuple();
+                                //鍒ゆ柇鏄惁涓虹伆搴﹀浘
+                                using (HDevDisposeHelper dh = new HDevDisposeHelper())
+                                {
+                                    try
+                                    {
+                                        //hv_Channels = hoDomainImage.CountChannels();
+                                        //if (hv_Channels.TupleInt() != 1)
+                                        //    HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
 
-                                //杞崲鍚庡啀娆℃鏌ユ槸鍚︿负鐏板害鍥�
-                                HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
-                                if (hv_Channels.TupleInt() != 1)
-                                    HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
+                                        ////杞崲鍚庡啀娆℃鏌ユ槸鍚︿负鐏板害鍥�
+                                        //HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
+                                        //if (hv_Channels.TupleInt() != 1)
+                                        //    HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
+                                    }
+                                    catch { }
+                                }
+                                HObject hoImageReduced = hoDomainImage.Rgb1ToGray().ReduceDomain(hRectangle);
+                                HOperatorSet.CropDomain(hoImageReduced, out hoImageReduced);
+                                TAlgorithm.HObject2Mat(hoImageReduced, out Mat hoModelImage);
+                                bool bCreateModel = false;
+
+                                switch (modelType)
+                                {
+                                    case ModelType.鐏板害鍖归厤:
+                                        bCreateModel = ((FindModelTool)Subject).CreateModel
+                                            (hoModelImage, modelType, NumLevels
+                                            , AngleStart, AngleExtent, AngleStep
+                                            , ScaleRMin, ScaleRMax, "auto"
+                                            , ScaleCMin, ScaleCMax, "auto"
+                                            , Optimization, Metric, Contrast, MinContrast);
+                                        break;
+                                    default:
+                                        bCreateModel = ((FindModelTool)Subject).CreateModel
+                                            (hoModelImage, modelType, NumLevels
+                                            , AngleStart, AngleExtent, AngleStep
+                                            , ScaleRMin, ScaleRMax, "auto"
+                                            , ScaleCMin, ScaleCMax, "auto"
+                                            , Optimization, Metric, Contrast, MinContrast);
+                                        break;
+                                }
+
+                                if (bCreateModel)
+                                {
+                                    using (HObject ho_ModelContours = new HObject())
+                                    {
+                                        //switch (((FindModelTool)Subject).ModelID.Type)
+                                        //{
+                                        //    case ModelType.灞�閮ㄥ彉褰㈡ā鏉�:
+                                        //        HOperatorSet.GetDeformableModelContours(out ho_ModelContours, ((HFindModelTool)Subject).ModelID.hvModel, 1);
+                                        //        break;
+                                        //    case ModelType.鍚勫悜寮傚舰妯℃澘:
+                                        //    default:
+                                        //        HOperatorSet.GetShapeModelContours(out ho_ModelContours, ((HFindModelTool)Subject).ModelID.hvModel, 1);
+                                        //        break;
+                                        //}
+                                        //HOperatorSet.GetImageSize(((HFindModelTool)Subject).ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
+                                        //HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
+                                        //HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
+
+                                        //寤烘ā鎴愬姛瀵艰埅鍒板瓙椤�
+                                        parasTabControl.SelectedTab = tabPageRunParas;
+                                        //modelImageHSmartWindowControl.ShowHoImage(((HFindModelTool)Subject).ModelID.hoImage);
+                                        using (HImage modelImage = TAlgorithm.Mat2HObject(((FindModelTool)Subject).ModelID.hoImage))
+                                        {
+                                            modelImageHSmartWindowControl.ShowHoImage(modelImage);
+                                            modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
+                                            modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
+                                        }
+                                    }
+                                }
                             }
-                            catch { }
-                        }
-                        HOperatorSet.ReduceDomain(hoDomainImage, hRectangle, out HObject hoImageReduced);
-                        HOperatorSet.CropDomain(hoImageReduced, out hoImageReduced);
-                        TAlgorithm.HObject2Mat(hoImageReduced, out Mat hoModelImage);
-                        bool bCreateModel = false;
-
-                        switch (modelType)
-                        {
-                            case ModelType.鐏板害鍖归厤:
-                                bCreateModel = ((FindModelTool)Subject).CreateModel
-                                    (hoModelImage, modelType, NumLevels
-                                    , AngleStart, AngleExtent, AngleStep
-                                    , ScaleRMin, ScaleRMax, "auto"
-                                    , ScaleCMin, ScaleCMax, "auto"
-                                    , Optimization, Metric, Contrast, MinContrast);
-                                break;
-                            default:
-                                bCreateModel = ((FindModelTool)Subject).CreateModel
-                                    (hoModelImage, modelType, NumLevels
-                                    , AngleStart, AngleExtent, AngleStep
-                                    , ScaleRMin, ScaleRMax, "auto"
-                                    , ScaleCMin, ScaleCMax, "auto"
-                                    , Optimization, Metric, Contrast, MinContrast);
-                                break;
-                        }
-
-                        if (bCreateModel)
-                        {
-                            HObject ho_ModelContours = new HObject();
-                            //switch (((FindModelTool)Subject).ModelID.Type)
-                            //{
-                            //    case ModelType.灞�閮ㄥ彉褰㈡ā鏉�:
-                            //        HOperatorSet.GetDeformableModelContours(out ho_ModelContours, ((HFindModelTool)Subject).ModelID.hvModel, 1);
-                            //        break;
-                            //    case ModelType.鍚勫悜寮傚舰妯℃澘:
-                            //    default:
-                            //        HOperatorSet.GetShapeModelContours(out ho_ModelContours, ((HFindModelTool)Subject).ModelID.hvModel, 1);
-                            //        break;
-                            //}
-                            //HOperatorSet.GetImageSize(((HFindModelTool)Subject).ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
-                            //HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
-                            //HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
-
-                            //寤烘ā鎴愬姛瀵艰埅鍒板瓙椤�
-                            parasTabControl.SelectedTab = tabPageRunParas;
-                            //modelImageHSmartWindowControl.ShowHoImage(((HFindModelTool)Subject).ModelID.hoImage);
-                            TAlgorithm.Mat2HObject(((FindModelTool)Subject).ModelID.hoImage, out HObject modelImage);
-                            modelImageHSmartWindowControl.ShowHoImage(modelImage);
-                            modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
-                            modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
                         }
                     }
                 }
@@ -1215,27 +1229,32 @@
 
                 if (ModelID != null && ModelID.Width > 0)
                 {
-                    HOperatorSet.GenEmptyObj(out HObject ho_ModelContours);
-                    //switch (ModelID.Type)
-                    //{
-                    //    case ModelType.鍚勫悜寮傚舰妯℃澘:
-                    //        HOperatorSet.GetDeformableModelContours(out ho_ModelContours, ModelID.hvModel, 1);
-                    //        break;
-                    //    default:
-                    //        HOperatorSet.GetShapeModelContours(out ho_ModelContours, ModelID.hvModel, 1);
-                    //        break;
-                    //}
+                    //HOperatorSet.GenEmptyObj(out HObject ho_ModelContours);
+                    using (HRegion ho_ModelContours = new HRegion())
+                    {
+                        //switch (ModelID.Type)
+                        //{
+                        //    case ModelType.鍚勫悜寮傚舰妯℃澘:
+                        //        HOperatorSet.GetDeformableModelContours(out ho_ModelContours, ModelID.hvModel, 1);
+                        //        break;
+                        //    default:
+                        //        HOperatorSet.GetShapeModelContours(out ho_ModelContours, ModelID.hvModel, 1);
+                        //        break;
+                        //}
 
-                    //HOperatorSet.GetImageSize(ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
-                    //HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
-                    //HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
+                        //HOperatorSet.GetImageSize(ModelID.hoImage, out HTuple hv_Width, out HTuple hv_Height);
+                        //HOperatorSet.VectorAngleToRigid(-hv_Height / 2, -hv_Width / 2, 0, 0, 0, 0, out HTuple hv_HomMat2D);
+                        //HOperatorSet.AffineTransContourXld(ho_ModelContours, out ho_ModelContours, hv_HomMat2D);
 
-                    modelImageHSmartWindowControl.ClearObj();
-                    TAlgorithm.Mat2HObject(ModelID.hoImage, out HObject hoImage);
-                    //modelImageHSmartWindowControl.ShowHoImage(ModelID.hoImage);
-                    modelImageHSmartWindowControl.ShowHoImage(hoImage);
-                    modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
-                    modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
+                        modelImageHSmartWindowControl.ClearObj();
+                        using (HImage hoImage = TAlgorithm.Mat2HObject(ModelID.hoImage))
+                        {
+                            //modelImageHSmartWindowControl.ShowHoImage(ModelID.hoImage);
+                            modelImageHSmartWindowControl.ShowHoImage(hoImage);
+                            modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
+                            modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
+                        }
+                    }
                 }
             }
             catch { }

--
Gitblit v1.9.3