领胜LDS 键盘AOI检测项目
patrick.xu
2021-03-06 8a3ab64a65da226636743be07c4bee63f50da25d
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;
        }
    }
}