From a383b2288dcfb90e9aa1dcf796e41d9c6be1e429 Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期一, 02 八月 2021 17:26:56 +0800
Subject: [PATCH] 1. 部分修改

---
 src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 74 insertions(+), 3 deletions(-)

diff --git a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
index c235581..7fc9b36 100644
--- a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
+++ b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs
@@ -136,9 +136,15 @@
             catch (HDevEngineException ex)
             {
                 IsSuccessful = false;
+                errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}";
+                return false;
+            }
+            catch (Exception ex)
+            {
+                IsSuccessful = false;
                 //Trace.TraceInformation("HDevProgram {0} Run fail , Line number: {1}, Halcon error number : {2},ex:{3}", ex.ProcedureName, ex.LineNumber, ex.HalconError, ex.Message);
                 //return;
-                errorMsg = $"HDevProgram {ex.ProcedureName} Run fail , Line number: {ex.LineNumber}, Halcon error number : {ex.HalconError},ex:{ex.Message}";
+                errorMsg = $"{ex.Message}";
                 return false;
             }
         }
@@ -208,7 +214,7 @@
             }
         }
 
-        public static Bitmap ConvertHImgaeToBitmap(this HImage hImage)
+        public static Bitmap ConvertHImageToBitmap(this HImage hImage)
         {
             try
             {
@@ -250,10 +256,75 @@
 
             for (int i = 0; i < tuple.Length; i++)
             {
-                list.Add(tuple[i]);
+                list.Add(tuple[i].D);
             }
 
             return list;
         }
+
+        public static HImage ConvertHObjectToHImage(this HObject obj)
+        {
+            HTuple pointer, type, width, heght;
+            HOperatorSet.GetImagePointer1(obj, out pointer, out type, out width, out heght);
+
+            HImage img = new HImage();
+            img.GenImage1(type, width, heght, pointer);
+
+            return img;
+        }
+
+        public static Bitmap ConvertHImageTo16GrayBitmap(this HImage originHImage)
+        {
+            HImage hImage = originHImage.Clone();
+
+            //get_domain(Image, rectangle)
+            //* 鑾峰彇鍏ㄥ浘涓儚绱犵伆搴﹀�肩殑鏈�澶у拰鏈�灏忓��
+            //min_max_gray(rectangle, Image, 0, Min, Max, range)
+            hImage.MinMaxGray(hImage.GetDomain(), 0, out double min, out double max, out double range);
+
+            //* 灏�16浣嶅浘鐨勭伆搴﹀�兼槧灏勫埌0 - 255涓�
+            double mult = 255.0 / (max - min);
+            double add = -mult * min;
+            hImage = hImage.ScaleImage(mult, add);
+
+            //* 杞崲涓�'byte'绫诲瀷
+            //convert_image_type(Image_scaled, ImageConverted, 'byte')
+            hImage = hImage.ConvertImageType("byte");
+
+            Bitmap showImage = hImage.ConvertHImageToBitmap();
+
+            hImage.Dispose();
+
+            return showImage;
+        }
+
+        public static Bitmap ConvertSignedHImageTo16GrayBitmap(this HImage originHImage)
+        {
+            HImage hImage = originHImage.Clone();
+
+            hImage = hImage.ConvertImageType("int4");
+            hImage = hImage.ScaleImage(1.0, 32768);
+            hImage = hImage.ConvertImageType("uint2");
+
+            //get_domain(Image, rectangle)
+            //* 鑾峰彇鍏ㄥ浘涓儚绱犵伆搴﹀�肩殑鏈�澶у拰鏈�灏忓��
+            //min_max_gray(rectangle, Image, 0, Min, Max, range)
+            hImage.MinMaxGray(hImage.GetDomain(), 0, out double min, out double max, out double range);
+
+            //* 灏�16浣嶅浘鐨勭伆搴﹀�兼槧灏勫埌0 - 255涓�
+            double mult = 255.0 / (max - min);
+            double add = -mult * min;
+            hImage = hImage.ScaleImage(mult, add);
+
+            //* 杞崲涓�'byte'绫诲瀷
+            //convert_image_type(Image_scaled, ImageConverted, 'byte')
+            hImage = hImage.ConvertImageType("byte");
+
+            Bitmap showImage = hImage.ConvertHImageToBitmap();
+
+            hImage.Dispose();
+
+            return showImage;
+        }
     }
 }

--
Gitblit v1.8.0