| | |
| | | |
| | | if (Subject.InputImage != null && Subject.InputImage is Mat) |
| | | { |
| | | using (HImage image = TAlgorithm.Mat2HImage((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); |
| | | })); |
| | | } |
| | | |
| | |
| | | |
| | | if (Subject.InputImage != null && Subject.InputImage is Mat) |
| | | { |
| | | 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); |
| | | 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(); |
| | |
| | | HTuple hv_imageHeight = 0; |
| | | if (InputImage != null && InputImage is Mat) |
| | | { |
| | | using (HImage image = TAlgorithm.Mat2HImage((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; |
| | | } |
| | | } |
| | | } |
| | |
| | | if (InputImage != null && InputImage is Mat) |
| | | { |
| | | imgTabControl.SelectedTab = tabPageModelImage; |
| | | using (HImage hoDomainImage = TAlgorithm.Mat2HImage((Mat)InputImage)) |
| | | { |
| | | HOperatorSet.GetImageSize(hoDomainImage, out HTuple hv_imageWidth, out HTuple hv_imageHeight); |
| | | createModelImageHSmartWindowControl.ShowHoImage(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); |
| | | } |
| | | } |
| | | |
| | |
| | | if (InputImage != null && InputImage is Mat) |
| | | { |
| | | double result = 0; |
| | | |
| | | if (Enum.TryParse(cmbModelType.Text, out ModelType modelType)) |
| | | { |
| | | string NumLevels = this.dtxtModelParam1.Text; |
| | |
| | | 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.Mat2HImage((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.Mat2HImage(((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); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | 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.Mat2HImage(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 { } |