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