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; } }
// 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; }
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; }
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; } }
// 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; }
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); }
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); } }
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; } } } }