Пример #1
2
        private Bitmap Flatten(Bitmap bmp, int fillint, int contint)
        {
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red = new IntRange(0, fillint);
            colorFilter.Green = new IntRange(0, fillint);
            colorFilter.Blue = new IntRange(0, fillint);
            colorFilter.FillOutsideRange = false;
            using (Bitmap filteredBmp = colorFilter.Apply(bmp))
            {
                AForge.Imaging.Filters.ContrastCorrection Contrast = new ContrastCorrection(contint);
                AForge.Imaging.Filters.Invert invert = new Invert();
                AForge.Imaging.Filters.ExtractChannel extract_channel = new ExtractChannel(RGB.B);
                AForge.Imaging.Filters.Threshold thresh_hold = new Threshold(44);

                Contrast.ApplyInPlace(filteredBmp);

                Bitmap extractedBmp = extract_channel.Apply(filteredBmp);
                thresh_hold.ApplyInPlace(extractedBmp);
                invert.ApplyInPlace(extractedBmp);

                return extractedBmp;
            }
        }
Пример #2
0
        // rgb 필터
        public static Bitmap RGBfilter(Bitmap source)
        {
            ///////////// ini 객체 생성 시작 /////////////////////////////////////////////////////
            //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe
            FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe");
            string pathini = exefileinfo.Directory.FullName.ToString();  //프로그램 실행되고 있는데 path 가져오기
            string fileName = @"\PLOCRconfig.ini";  // 환경설정 파일명
            string filePath = pathini + fileName;   //ini 파일 경로
            PLOCR.IniUtil ini = new PLOCR.IniUtil(filePath);   // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌)
            //////////// ini 객체 생성 끝 /////////////////////////////////////////////////////////

            int redMin = int.Parse(ini.GetIniValue("색상필터값", "RedMin"));
            int redMax = int.Parse(ini.GetIniValue("색상필터값", "RedMax"));
            int greenMin = int.Parse(ini.GetIniValue("색상필터값", "GreenMin"));
            int greenMax = int.Parse(ini.GetIniValue("색상필터값", "GreenMax"));
            int blueMin = int.Parse(ini.GetIniValue("색상필터값", "BlueMin"));
            int blueMax = int.Parse(ini.GetIniValue("색상필터값", "BlueMax"));

            // create filter
            ColorFiltering filter = new ColorFiltering();
            // set color ranges to keep
            filter.Red = new IntRange(redMin, redMax);
            filter.Green = new IntRange(greenMin, greenMax);
            filter.Blue = new IntRange(blueMin, blueMax);
            Bitmap processedImage = filter.Apply(source);

            return processedImage;
        }
Пример #3
0
        private Bitmap ApplyRGBFilter(Bitmap sourceImage)
        {

            ColorFiltering filter = new ColorFiltering();
            filter.Red = new AForge.IntRange(50, red);
            filter.Green = new AForge.IntRange(50, green);
            filter.Blue = new AForge.IntRange(50, blue);
            Bitmap processedImage = filter.Apply(sourceImage);
            filter.ApplyInPlace(processedImage);
            return processedImage;
        }
Пример #4
0
        void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            var frame = eventArgs.Frame;

            if (isTesting)
            {
                var r = new ColorFiltering(new IntRange(250, 255), new IntRange(250, 255), new IntRange(250, 255));
                var r1 = r.Apply(frame);

                ImageStatistics is0 = new ImageStatistics(r1);
                int no = is0.PixelsCountWithoutBlack;
                Console.WriteLine(no);

                m_pictureBox.Image = r1;
                return;
            }

            var cf1 = new ColorFiltering(new IntRange(250, 255), new IntRange(250, 255), new IntRange(250, 255));
            var fi1 = cf1.Apply(frame);

            ImageStatistics imageStatistics = new ImageStatistics(fi1);
            int numOn = imageStatistics.PixelsCountWithoutBlack;
            if (numOn > 10)
            {
                rawtext += "O";
            }
            else
            {
                rawtext += "-";
            }

            var ar = GetLetters(GuessMorseCode(rawtext)).ToArray();
            if (ar.Length != 0)
            {
                decodedMessage += ar[0];
                if (previousDecodedMessageLength != decodedMessage.Length)
                {
                    foreach (var c in decodedMessage)
                    {
                        Console.Write(c);
                    }
                    Console.WriteLine();
                    previousDecodedMessageLength = decodedMessage.Length;
                }
                rawtext = string.Empty;
            }
        }
Пример #5
0
 // rgb 필터
 private Bitmap RGBfilter(Bitmap source)
 {
     // create filter
     ColorFiltering filter = new ColorFiltering();
     // set color ranges to keep
     filter.Red = new IntRange(redMin, redMax);
     filter.Green = new IntRange(greenMin, greenMax);
     filter.Blue = new IntRange(blueMin, blueMax);
     Bitmap processedImage = filter.Apply(source);
     return processedImage;
 }
Пример #6
0
        static void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            var frame = eventArgs.Frame;

            if (m_isTesting)
            {
                var r = new ColorFiltering(new IntRange(250, 255), new IntRange(250, 255), new IntRange(250, 255));
                var r1 = r.Apply(frame);

                ImageStatistics is0 = new ImageStatistics(r1);
                int no = is0.PixelsCountWithoutBlack;
                Console.WriteLine(no);

                return;
            }

            var cf1 = new ColorFiltering(new IntRange(250, 255), new IntRange(250, 255), new IntRange(250, 255));
            var fi1 = cf1.Apply(frame);

            ImageStatistics imageStatistics = new ImageStatistics(fi1);
            int numOn = imageStatistics.PixelsCountWithoutBlack;
            if (numOn > 15)
            {
                m_rawtext += "O";
            }
            else
            {
                m_rawtext += "-";
            }

            Console.Clear();
            Console.SetCursorPosition(0, 1);
            Console.Write(m_rawtext);

            var ar = GetLetters(GuessMorseCode(m_rawtext)).ToArray();
            if (ar.Length != 0)
            {
                foreach(var v in ar)
                    m_decodedMessage += v;
                m_rawtext = string.Empty;
            }

            string message = "'";
            foreach (var c in m_decodedMessage)
            {
                message += c;
            }
            message += "'";

            Console.SetCursorPosition(0, 4);
            Console.Write(message);
        }
Пример #7
0
        private void traitementimage(ref Bitmap image)
        {

            ColorFiltering filter = new ColorFiltering();
            filter.Red = new IntRange(254, 255);
            filter.Green = new IntRange(0, 240);
            filter.Blue = new IntRange(0, 240);
            Bitmap tmp = filter.Apply(image);
            IFilter grayscale = new GrayscaleBT709();
            tmp = grayscale.Apply(tmp);
            BitmapData bitmapData = tmp.LockBits(new Rectangle(0, 0, image.Width, image.Height),
            ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);
            BlobCounter blobCounter = new BlobCounter();
            blobCounter.ProcessImage(bitmapData);
            blobCounter.ObjectsOrder = ObjectsOrder.Size;
            Rectangle[] rects = blobCounter.GetObjectsRectangles();
            tmp.UnlockBits(bitmapData);
            tmp.Dispose();
            if (rects.Length != 0)
            {
                backpoint = Centre(rects[0]);
                lignes(ref image, backpoint);

            }

        }
Пример #8
-1
        private void AnaliseMap(Bitmap mapImage)
        {
            mapData.Clear();
            ColorFiltering filter = new ColorFiltering();
            Trace.WriteLine("Analysing color map " + mapLocation + "...");

            foreach (String action in colorMap.Actions)
            {
                Color actionColor = colorMap.GetColorFor(action);

                filter.Red = new IntRange(actionColor.R, actionColor.R);
                filter.Green = new IntRange(actionColor.G, actionColor.G);
                filter.Blue = new IntRange(actionColor.B, actionColor.B);

                using (Bitmap colorFilteredMapImage = filter.Apply(mapImage))
                {
                    // Once we have isolated the action color on the map image
                    // we need to find the biggest rectangle left in the map (as there could be noise)

                    BlobCounter bc = new BlobCounter();
                    bc.ProcessImage(colorFilteredMapImage);
                    Rectangle[] rects = bc.GetObjectsRectangles();
                    if (rects.Count<Rectangle>() == 0) Trace.WriteLine("Warning: No rectangles were found for " + actionColor.ToString());

                    Rectangle biggestRect = Rectangle.Empty;
                    foreach (Rectangle rect in rects)
                    {
                        // Compare areas
                        if (rect.Width * rect.Height > biggestRect.Width * biggestRect.Height)
                        {
                            biggestRect = rect;
                        }
                    }

                    // Did we find a rectangle?
                    if (!biggestRect.Equals(Rectangle.Empty) && (biggestRect.Width * biggestRect.Height > MIN_AREA_THRESHOLD))
                    {
                        Trace.WriteLine("Found rectangle for " + action + ": " + biggestRect.ToString());
                        mapData[action] = biggestRect;
                    }
                }
            }
        }