From e8df282b9b5de43250164efa2cb55a19de267c0b Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期二, 06 一月 2026 14:22:22 +0800
Subject: [PATCH] 3D相机功能实现和参数界面扩展,通过将 PHM6000SensorConfig 绑定到 PropertyGrid,用户可以直接在界面上调整所有 3D 参数
---
LB_SmartVision/ProcessRun/ProcessContext.cs | 52 ++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 40 insertions(+), 12 deletions(-)
diff --git a/LB_SmartVision/ProcessRun/ProcessContext.cs b/LB_SmartVision/ProcessRun/ProcessContext.cs
index 313c6cb..4081006 100644
--- a/LB_SmartVision/ProcessRun/ProcessContext.cs
+++ b/LB_SmartVision/ProcessRun/ProcessContext.cs
@@ -9,6 +9,7 @@
using LB_VisionProcesses.Processes.ScriptTool;
using OpenCvSharp;
using System.Collections.Concurrent;
+using System.Windows.Media.Media3D;
namespace LB_SmartVision.ProcessRun
{
@@ -301,7 +302,7 @@
return res;
}
- public bool GetImage(Layout layout, out HImage InputImage, out HObject RecordImage)
+ public bool GetImage(Layout layout, out HObject InputImage, out HObject RecordImage)
{
InputImage = null; RecordImage = null;
try
@@ -329,23 +330,19 @@
IndexValueName = arrOutputs[2];
object o_InputImage = ((IProcess)dicContext[IndexProcessName]).OutputImage;
- if (o_InputImage is HImage ho_image && ho_image.IsInitialized())
+ if (o_InputImage is HObject ho_image && ho_image.IsInitialized())
InputImage = ho_image;
else if (o_InputImage is Bitmap)
{
//灏哅at杞崲涓篐Object
- using (HImage ho_RecordImage = TAlgorithm.Bitmap2HObject((Bitmap)o_InputImage))
- {
- InputImage = ho_RecordImage.Clone();
- }
+ TAlgorithm.Bitmap2HObject((Bitmap)o_InputImage, out HObject ho_RecordImage);
+ InputImage = ho_RecordImage;
}
else if (o_InputImage is Mat)
{
//灏哅at杞崲涓篐Object
- using (HImage ho_RecordImage = TAlgorithm.Mat2HObject((Mat)o_InputImage))
- {
- InputImage = ho_RecordImage.Clone();
- }
+ TAlgorithm.Mat2HObject((Mat)o_InputImage, out HObject ho_RecordImage);
+ InputImage = ho_RecordImage;
}
if (InputImage != null && InputImage.IsInitialized())
@@ -493,7 +490,37 @@
if (dicContext.TryGetValue(ProcessName, out IProcess obj)
&& obj is IProcess process)
{
- process.InputImage = null;
+ //process.InputImage = null;
+
+ if (process.InputImage != null)
+ {
+ if (process.InputImage is HObject)
+ ((HObject)process.InputImage).Dispose();
+ else if (process.InputImage is Mat)
+ ((Mat)process.InputImage).Dispose();
+ else if (process.InputImage is Bitmap)
+ ((Bitmap)process.InputImage).Dispose();
+
+ process.InputImage = null;
+ }
+
+ if (process.OutputImage != null)
+ {
+ if (process.OutputImage is HObject)
+ ((HObject)process.OutputImage).Dispose();
+ else if (process.OutputImage is Mat)
+ ((Mat)process.OutputImage).Dispose();
+ else if (process.OutputImage is Bitmap)
+ ((Bitmap)process.OutputImage).Dispose();
+
+ process.OutputImage = null;
+ }
+
+ if (process.Record != null)
+ {
+ process.Record.Dispose();
+ process.Record = null;
+ }
UpdateInputs(process);
// 涓嶅悓鑺傜偣璺宠繃鐨勬柟寮忎笉鍚�
@@ -543,9 +570,10 @@
[Node("鐩告満鍙栧浘", "鍙栧儚宸ュ叿", "Basic", "鐩告満鍙栧浘")]
public void 鐩告満鍙栧浘(FlowNode node) { RunNodeAsync(node); }
- [Node("Halcon2D鏂戠偣宸ュ叿", "Halcon2D宸ュ叿", "Basic", "Halcon2D鏂戠偣宸ュ叿")]
+ [Node("Halcon2D鏂戠偣宸ュ叿", "Haclon2D宸ュ叿", "Basic", "Halcon2D鏂戠偣宸ュ叿")]
public void Halcon2D鏂戠偣宸ュ叿(FlowNode node) { RunNodeAsync(node); }
+
#endregion
--
Gitblit v1.9.3