From 96b6869bb20677f9b945f67c014a9b992ee05ac4 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期三, 28 四月 2021 11:40:01 +0800 Subject: [PATCH] 1. 添加离线测试功能 2. 单键分开测量修改赋值和释放时判断 --- 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