From 46431fb658701489f8d5de4475b02df728c51f36 Mon Sep 17 00:00:00 2001
From: chunxiaqiu <1057644574@qq.com>
Date: 星期三, 18 三月 2026 15:48:26 +0800
Subject: [PATCH] 新增:读码器功能模块,集成华睿读码器并初步实现读码功能
---
LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 103 insertions(+), 6 deletions(-)
diff --git a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
index 0c95831..dd8e2e6 100644
--- a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
+++ b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -41,7 +41,7 @@
/// <summary>
/// 璇诲啓閿�
/// </summary>
- public readonly object lockObj = new object();
+ public static readonly object lockObj = new object();
/// <summary>
/// 瑁佸垏鍥剧墖涓篽oDomainImage(淇濈暀鍘熷潗鏍囩郴,鍏朵綑濉厖涓虹┖)
@@ -304,7 +304,16 @@
Result = true;
bCompleted = false;
Msg = "";
- OutputImage = null;
+ if (OutputImage != null)
+ {
+ if (OutputImage is HObject)
+ ((HObject)OutputImage).Dispose();
+ else if (OutputImage is Mat)
+ ((Mat)OutputImage).Dispose();
+ else if (OutputImage is Bitmap)
+ ((Bitmap)OutputImage).Dispose();
+ OutputImage = null;
+ }
if (Record != null)
Record.Dispose();
@@ -645,6 +654,7 @@
else
{
throw new ArgumentException($"Mat2HObject涓嶆敮鎸佺殑鍥惧儚鏍煎紡锛歿mat.Type()}");
+ return;
}
return;
}
@@ -1237,10 +1247,10 @@
HOperatorSet.GenImageConst(out image, "real", hv_xMax + 1, hv_yMax + 1);
HOperatorSet.SetGrayval(image, hv_y, hv_x, hv_z);
- //hoperatorset.getimagesize(ho_image, out htuple hv_width, out htuple hv_height);
- //hoperatorset.genrectangle1(out hobject ho_rectangle, 0, 0, hv_height - 1, hv_width - 1);
- //hoperatorset.getregionpoints(ho_rectangle, out htuple hv_rows, out htuple hv_columns);
- //hoperatorset.getgrayval(ho_image, hv_rows, hv_columns, out htuple hv_z);
+ //HOperatorSet.GetImageSize(ho_Image, out HTuple hv_Width, out HTuple hv_Height);
+ //HOperatorSet.GenRectangle1(out HObject ho_Rectangle, 0, 0, hv_Height - 1, hv_Width - 1);
+ //HOperatorSet.GetRegionPoints(ho_Rectangle, out HTuple hv_Rows, out HTuple hv_Columns);
+ //HOperatorSet.GetGrayval(ho_Image, hv_Rows, hv_Columns, out HTuple hv_Z);
}
catch { image = null; }
}
@@ -3823,6 +3833,93 @@
}
/// <summary>
+ /// 鍥惧儚澧炲己绠楁硶-杈圭紭澧炲己
+ /// </summary>
+ /// <param name="ho_Image">寰呮祴鍥剧墖</param>
+ /// <param name="hv_ImageEnhancementType">婊ゆ尝鍣ㄧ被鍨�(mean/gauss/median)</param>
+ /// <param name="hv_Wid">鎺╄啘瀹�</param>
+ /// <param name="hv_High">鎺╄啘楂�</param>
+ /// <param name="hv_Fac">澧炲己鍥犲瓙</param>
+
+ public static void ImageEnhancement(HObject ho_Image, out HObject ho_OutImage, string hv_ImageEnhancementType, int hv_Wid, int hv_High, double hv_Fac)
+ {
+ HOperatorSet.GenEmptyObj(out ho_OutImage);
+
+ try
+ {
+ // 鏍规嵁婊ゆ尝鍣ㄧ被鍨嬫墽琛岀浉搴旀搷浣�
+ switch (hv_ImageEnhancementType.ToLower())
+ {
+ case "emphasize":
+ HOperatorSet.Emphasize(ho_Image, out ho_OutImage, hv_Wid, hv_High, hv_Fac);
+ break;
+
+ case "scaleimagemax":
+ HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
+ break;
+
+ case "equhisto":
+ HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
+ break;
+
+ default:
+ throw new ArgumentException($"涓嶆敮鎸佺殑婊ゆ尝鍣ㄧ被鍨�: {hv_ImageEnhancementType}");
+ }
+ }
+ catch (Exception ex)
+ {
+ // 纭繚寮傚父鏃堕噴鏀捐祫婧�
+ ho_OutImage?.Dispose();
+ throw new Exception($"鍥惧儚婊ゆ尝澶辫触: {ex.Message}", ex);
+ }
+ }
+
+ /// <summary>
+ /// 鍥惧儚婊ゆ尝
+ /// </summary>
+ /// <param name="ho_Image">寰呮祴鍥剧墖</param>
+ /// <param name="ho_OutImage">杈撳嚭鍥剧墖</param>
+ /// <param name="hv_FilterType">婊ゆ尝鍣ㄧ被鍨�(mean/gauss/median)</param>
+ /// <param name="hv_Wid">鎺╄啘瀹�</param>
+ /// <param name="hv_High">鎺╄啘楂�</param>
+ /// <param name="hv_Size">楂樻柉鏍稿昂瀵�</param>
+ public static void Filter(HObject ho_Image, out HObject ho_OutImage, string hv_FilterType, int hv_Wid, int hv_High, int hv_Size)
+ {
+ // 鍒濆鍖栬緭鍑哄璞�
+ HOperatorSet.GenEmptyObj(out ho_OutImage);
+
+ try
+ {
+ // 鏍规嵁婊ゆ尝鍣ㄧ被鍨嬫墽琛岀浉搴旀搷浣�
+ switch (hv_FilterType.ToLower())
+ {
+ case "mean":
+ HOperatorSet.MeanImage(ho_Image, out ho_OutImage, hv_Wid, hv_High);
+ break;
+
+ case "gauss":
+ case "guass": // 鍏煎鎷煎啓閿欒
+ HOperatorSet.GaussFilter(ho_Image, out ho_OutImage, hv_Size);
+ break;
+
+ case "median":
+ HOperatorSet.MedianRect(ho_Image, out ho_OutImage, hv_Wid, hv_High);
+ break;
+
+ default:
+ throw new ArgumentException($"涓嶆敮鎸佺殑婊ゆ尝鍣ㄧ被鍨�: {hv_FilterType}");
+ }
+ }
+ catch (Exception ex)
+ {
+ // 纭繚寮傚父鏃堕噴鏀捐祫婧�
+ ho_OutImage?.Dispose();
+ throw new Exception($"鍥惧儚婊ゆ尝澶辫触: {ex.Message}", ex);
+ }
+ }
+
+
+ /// <summary>
/// 鍗″昂绠楁硶
/// </summary>
/// <param name="ho_Image">寰呮祴鍥剧墖</param>
--
Gitblit v1.9.3