| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | public static Bitmap ConvertHImgaeToBitmap(this HImage hImage) |
| | | public static Bitmap ConvertHImageToBitmap(this HImage hImage) |
| | | { |
| | | try |
| | | { |
| | |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | } |