Ejemplo n.º 1
0
        public static EditImageSet GetEditImageSet()
        {
            if (_eis == null)
            {
                _eis = new EditImageSet();
            }

            return(_eis);
        }
Ejemplo n.º 2
0
        private void linkEditImageSet_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (this.pictureBox1.Image == null)
            {
                return;
            }

            EditImageSet eis = EditImageSet.GetEditImageSet();

            eis.ShowDialog();
        }
Ejemplo n.º 3
0
        private void linkAdvnSet_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            EditImageSet eis = EditImageSet.GetEditImageSet();

            eis.ShowDialog();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 图像处理
        /// </summary>
        /// <param name="_bit"></param>
        /// <returns></returns>
        public static Bitmap ImageProcessing(Image _bit)
        {
            bool  IsContrastRatio            = EditImageSet.GetEditImageSet().IsContrastRatio;          //开启对比度调整
            int   ContrastRatioValue         = EditImageSet.GetEditImageSet().ContrastRatioValue;
            bool  IsBackgroundColorReplace   = EditImageSet.GetEditImageSet().IsBackgroundColorReplace; //关闭背景色替换
            Color ReplaceBackgroundColor     = EditImageSet.GetEditImageSet().ReplaceBackgroundColor;
            int   BackgroundReplaceTolerance = EditImageSet.GetEditImageSet().BackgroundReplaceTolerance;
            bool  IsGrayByPixels             = EditImageSet.GetEditImageSet().IsGrayByPixels; //开启灰度处理
            bool  IsThresholding             = EditImageSet.GetEditImageSet().IsThresholding;
            bool  IsClearNoise        = EditImageSet.GetEditImageSet().IsClearNoise;          //降噪
            int   GrayBackgroundLimit = EditImageSet.GetEditImageSet().GrayBackgroundLimit;
            int   NoiseMaxNearPoints  = EditImageSet.GetEditImageSet().NoiseMaxNearPoints;
            bool  IsAutoImageSize     = EditImageSet.GetEditImageSet().IsAutoImageSize;//自动裁剪图像
            int   AutoImageHeight     = EditImageSet.GetEditImageSet().AutoImageHeight;
            bool  IsStartHoughtLine   = EditImageSet.GetEditImageSet().IsHouhtLine;
            int   HoughtHeight        = EditImageSet.GetEditImageSet().HouhtLineHeight;

            try
            {
                _ocrImage = new Bitmap(_bit);

                //图像处理
                ImageCodeHandle imgHandle = new ImageCodeHandle(_ocrImage);
                //调整对比度 截图过程中处理
                if (IsContrastRatio)//是否进行对比度调整
                {
                    _ocrImage = imgHandle.img_color_contrast(ContrastRatioValue);
                }
                //替换背景色
                if (IsBackgroundColorReplace)
                {
                    //取背景色
                    Color BackgroundColor = _ocrImage.GetPixel(1, 1);
                    _ocrImage = imgHandle.ReplaceColor(BackgroundColor, ReplaceBackgroundColor, BackgroundReplaceTolerance);
                }
                if (IsStartHoughtLine)
                {
                    _ocrImage = ImageCodeHandle.hough_line(_ocrImage, HoughtHeight);
                }
                if (IsGrayByPixels)
                {
                    //_ocrImage = imgHandle.GrayByPixels();//灰度
                    _ocrImage = imgHandle.ToGrey();//灰度
                    if (IsThresholding)
                    {
                        _ocrImage = imgHandle.Thresholding();                   //二值化

                        if (IsAutoImageSize)                                    //自动裁剪图像
                        {
                            _ocrImage = ImageCodeHandle.TailorImage(_ocrImage); //裁剪图像大小
                            if (_ocrImage.Height < AutoImageHeight)
                            {
                                float fTemp = ((float)AutoImageHeight) / ((float)_ocrImage.Height);//缩放因子

                                int iw = (int)Math.Round(_ocrImage.Width * fTemp, 0);
                                int ih = (int)Math.Round(_ocrImage.Height * fTemp, 0);

                                _ocrImage = ImageCodeHandle.KiResizeImage(_ocrImage, iw, ih);//缩放

                                imgHandle = new ImageCodeHandle(_ocrImage);
                                _ocrImage = imgHandle.Thresholding();//二值化
                            }
                        }
                    }

                    if (IsClearNoise)//黑白降噪
                    {
                        _ocrImage = imgHandle.ClearNoise(GrayBackgroundLimit, NoiseMaxNearPoints);
                    }
                }

                return(_ocrImage);
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("图像处理异常,异常信息:{0}", ex.Message), "异常");
                return(null);
            }
        }