From 4b3a410a5083970bb2e56d2ab459d860c4fa22d0 Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期二, 30 十二月 2025 15:50:42 +0800
Subject: [PATCH] 添加单流程多相机处理功能。
---
LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs | 230 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 113 insertions(+), 117 deletions(-)
diff --git a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
index f914bb9..bcfa800 100644
--- a/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
+++ b/LB_VisionProcesses/Alogrithms/OpenCvSharp/FindLineTool/FindLineToolEdit.cs
@@ -144,62 +144,61 @@
if (Subject.InputImage != null && Subject.InputImage is Mat)
{
- using (HImage image = TAlgorithm.Mat2HImage((Mat)Subject.InputImage))
+ TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
+ inputImageHSmartWindowControl.ShowHoImage(image);
+ }
+
+ Type type = Subject.Params.ROI?.GetType();
+ if (Subject.Params.ROI != null)
+ {
+ switch (type)
{
- 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;
- }
+ 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;
}
}));
}
@@ -259,27 +258,27 @@
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);
-
- 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);
- }
- }
+ TAlgorithm.Mat2HObject((Mat)Subject.InputImage, out HObject image);
+ HOperatorSet.GetImageSize(image, 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);
+
+ 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();
}));
}
@@ -346,30 +345,28 @@
HTuple hv_imageHeight = 0;
if (InputImage != null && InputImage is Mat)
{
- using (HImage image=TAlgorithm.Mat2HImage((Mat)InputImage))
- {
- image.GetImageSize(out hv_imageWidth, out hv_imageHeight);
- switch (type)
- {
- case RoiType.Rectangle2:
- inputImageHSmartWindowControl.oRoi
- = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0
- , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
- break;
- case RoiType.Circle:
- inputImageHSmartWindowControl.oRoi
- = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4);
- break;
- case RoiType.Segment:
- inputImageHSmartWindowControl.oRoi
- = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
- break;
- case RoiType.None:
- default:
- inputImageHSmartWindowControl.oRoi = null;
- break;
- }
- }
+ 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;
}
}
}
@@ -400,26 +397,25 @@
if (InputImage != null && InputImage is Mat)
{
- using (HImage image = TAlgorithm.Mat2HImage((Mat)InputImage))
- {
- inputImageHSmartWindowControl.ShowHoImage(image);
- int hv_Elements = Convert.ToInt16(itxtCaliperCount.Text);
- double hv_DetectHeight = Convert.ToDouble(dtxtCaliperHeight.Text);
- double hv_DetectWidth = Convert.ToDouble(dtxtCaliperWidth.Text);
-
- double hv_Row1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginRow + Subject.Params.Fixture.Row);
- double hv_Column1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginColumn + Subject.Params.Fixture.Column);
- double hv_Row2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndRow + Subject.Params.Fixture.Row);
- double hv_Column2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndColumn + Subject.Params.Fixture.Column);
-
- TAlgorithm.GetRakeRegions(null, out HObject ho_Regions, hv_Elements, hv_DetectHeight, hv_DetectWidth
- , new HTuple(), new HTuple(), new HTuple(), new HTuple()
- , hv_Row1, hv_Column1, hv_Row2, hv_Column2
- , out HTuple hv_ResultRow, out HTuple hv_ResultColumn);
-
- inputImageHSmartWindowControl.DispObj(ho_Regions);
- }
+ TAlgorithm.Mat2HObject((Mat)InputImage, out HObject image);
+ inputImageHSmartWindowControl.ShowHoImage(image);
}
+
+ int hv_Elements = Convert.ToInt16(itxtCaliperCount.Text);
+ double hv_DetectHeight = Convert.ToDouble(dtxtCaliperHeight.Text);
+ double hv_DetectWidth = Convert.ToDouble(dtxtCaliperWidth.Text);
+
+ double hv_Row1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginRow + Subject.Params.Fixture.Row);
+ double hv_Column1 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).BeginColumn + Subject.Params.Fixture.Column);
+ double hv_Row2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndRow + Subject.Params.Fixture.Row);
+ double hv_Column2 = Convert.ToDouble(((HSegment)inputImageHSmartWindowControl.oRoi).EndColumn + Subject.Params.Fixture.Column);
+
+ TAlgorithm.GetRakeRegions(null, out HObject ho_Regions, hv_Elements, hv_DetectHeight, hv_DetectWidth
+ , new HTuple(), new HTuple(), new HTuple(), new HTuple()
+ , hv_Row1, hv_Column1, hv_Row2, hv_Column2
+ , out HTuple hv_ResultRow, out HTuple hv_ResultColumn);
+
+ inputImageHSmartWindowControl.DispObj(ho_Regions);
}
catch { }
}));
--
Gitblit v1.9.3