From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期六, 06 三月 2021 11:35:20 +0800 Subject: [PATCH] 1. 解决软件异常崩溃问题 --- src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs | 64 +++++++++++++++++++++++++++++++- 1 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs b/src/Bro.Common.Device/DeviceBase/HDevEngineTool.cs index f1f385d..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 { @@ -266,5 +272,59 @@ 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