From 67fd626e321eb93bcc6427e017e536e696b0270a Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期二, 13 一月 2026 10:22:28 +0800
Subject: [PATCH] 添加3D硬触发取图触发检测流程。

---
 LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs |  395 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 188 insertions(+), 207 deletions(-)

diff --git a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
index 5e2e2df..392ee61 100644
--- a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
+++ b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindModelTool/FindModelToolEdit.cs
@@ -241,66 +241,64 @@
 
                 if (Subject.InputImage != null && Subject.InputImage is Mat)
                 {
-                    using (HImage image = TAlgorithm.Mat2HObject((Mat)Subject.InputImage))
-                    {
-                        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);
-
-                    }
+                    TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
+                    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);
             }));
         }
 
@@ -359,27 +357,25 @@
 
                 if (Subject.InputImage != null && Subject.InputImage is Mat)
                 {
-                    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);
+                    TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
+                    HOperatorSet.GetImageSize(image, out HTuple ho_ImageWidth, out HTuple ho_ImageHeight);
+                    recordImageHSmartWindowControl.ShowHoImage(image);
+                }
 
-                            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);
-                        }
+                //鍏堝垽鏂瓙绫诲啀鍒ゆ柇鐖剁被
+                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);
                 }
 
                 GC.Collect();
@@ -502,30 +498,28 @@
                     HTuple hv_imageHeight = 0;
                     if (InputImage != null && InputImage is Mat)
                     {
-                        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;
-                            }
-                        }
+                        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;
                     }
                 }
             }
@@ -1102,14 +1096,13 @@
             if (InputImage != null && InputImage is Mat)
             {
                 imgTabControl.SelectedTab = tabPageModelImage;
-                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);
-                }
+                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);
             }
         }
 
@@ -1120,6 +1113,7 @@
                 if (InputImage != null && InputImage is Mat)
                 {
                     double result = 0;
+
                     if (Enum.TryParse(cmbModelType.Text, out ModelType modelType))
                     {
                         string NumLevels = this.dtxtModelParam1.Text;
@@ -1137,83 +1131,75 @@
                         string Contrast = this.dtxtModelParam11.Text;
                         int MinContrast = Convert.ToInt16(this.dtxtModelParam12.Text);
                         HRectangle2 ROI = (HRectangle2)createModelImageHSmartWindowControl.oRoi;
-                        using (HRegion hRectangle = new HRegion())
+
+                        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())
                         {
-                            hRectangle.GenRectangle2(ROI.Row, ROI.Column, ROI.Phi, ROI.SemiLength1, ROI.SemiLength2);
-                            using (HImage hoDomainImage = TAlgorithm.Mat2HObject((Mat)InputImage))
+                            try
                             {
-                                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);
-                                        }
-                                    }
-                                }
+                                //杞崲鍚庡啀娆℃鏌ユ槸鍚︿负鐏板害鍥�
+                                HOperatorSet.CountChannels(hoDomainImage, out hv_Channels);
+                                if (hv_Channels.TupleInt() != 1)
+                                    HOperatorSet.Rgb1ToGray(hoDomainImage, out hoDomainImage);
                             }
+                            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);
                         }
                     }
                 }
@@ -1229,32 +1215,27 @@
 
                 if (ModelID != null && ModelID.Width > 0)
                 {
-                    //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.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.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();
-                        using (HImage hoImage = TAlgorithm.Mat2HObject(ModelID.hoImage))
-                        {
-                            //modelImageHSmartWindowControl.ShowHoImage(ModelID.hoImage);
-                            modelImageHSmartWindowControl.ShowHoImage(hoImage);
-                            modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
-                            modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
-                        }
-                    }
+                    modelImageHSmartWindowControl.ClearObj();
+                    TAlgorithm.Mat2HObject(ModelID.hoImage, out HObject hoImage);
+                    //modelImageHSmartWindowControl.ShowHoImage(ModelID.hoImage);
+                    modelImageHSmartWindowControl.ShowHoImage(hoImage);
+                    modelImageHSmartWindowControl.DispObj(ho_ModelContours, false);
+                    modelImageHSmartWindowControl.ShowMsg("鍒涘缓妯℃澘鎴愬姛", true);
                 }
             }
             catch { }

--
Gitblit v1.9.3