public static void Main(string[] args) { ImagesRenderer renderer = newImageRenderer(); // screen + reduce + invert Iterator <Image> screenIter = new MockIterator(toImage(new Bitmap("player9.png"))); //Iterator<Image> screenIter = new ScreenImageIterator(new Rectangle(100, 400, 80, 30)); Iterator <Image> reduceIter = new ReduceColorIterator(screenIter, new ColorReducers.TextBox()); Iterator <Image> invertIter = new InvertColorIterator(reduceIter, Color.White, Color.Black); Iterator <Image> replaceIter = new ReplaceColorIterator(invertIter, Color.White, Color.Transparent); // proxy IteratorProxy <Image> proxyIter = new IteratorProxy <Image>(replaceIter); ColorReplacer replacer = new ColorReplacer(Color.Transparent, Color.Cyan); proxyIter.handler += delegate(Image next) { setImage(renderer, toBitmap(replacer.replace(next))); }; // partition + decompose + crop Iterator <List <List <Image> > > patitionIter = new ImageHoriPartitionIterator(proxyIter); Iterator <List <List <Image> > > decomposeIter = new DecomposeImageIterator(patitionIter); Iterator <List <List <Image> > > cropIter = new CropImageIterator(decomposeIter); // hash HashSet <HashImage> hashImages = new HashSet <HashImage>(); int count = 0; while (cropIter.hasNext()) { List <List <Image> > images = cropIter.next(); foreach (List <Image> line in images) { foreach (Image image in line) { // dimensions if (!hasDimensions(image)) { continue; } // hash HashImage hash = new HashImage(image); if (!hashImages.Contains(hash)) { hashImages.Add(hash); System.Drawing.Image bitmap = toBitmap(image); addImage(renderer, bitmap); Console.WriteLine("Saving image " + count++); saveBitmap("char", uniqueId(hash), bitmap); } } } } }
public static void Main(string[] args) { Log.SetLevel(Log.Level.FINEST); // patterns List <CardPattern> patterns = CardReader.readCardsFromResources(); Console.WriteLine("read " + patterns.Count + " candidate patterns"); // renderer ImagesRenderer renderer = newImageRenderer(); // iterator Iterator <Image> wait; if (USE_SCREEN) { Thread.Sleep(10); TableContainer table = new BotAppLogic(new Win32Control()).LocateNewTable(new Settings()); Rectangle rect = new Rectangle(table.Layout.Offset.X, table.Layout.Offset.Y, table.Layout.Size.Width, table.Layout.Size.Height); Iterator <Image> screen = new ScreenImageIterator(new Win32Control(), rect); wait = new WaitDeltaImageIterator(screen); } else { wait = new MockIterator(toImage(new Bitmap("test/table_no_middle_button.png"))); } // proxy IteratorProxy <Image> proxyIter = new IteratorProxy <Image>(wait); proxyIter.handler += delegate(Image next) { setImage(renderer, toBitmap(next)); }; Console.WriteLine("initialized iterator"); // identifier CardStrategy strategy = new CardStrategyFast(patterns, new TableLayout9()); CardIdentifierIterator identifier = new CardIdentifierIterator(proxyIter, strategy.identifyRegions, strategy.identifyCards); // go while (identifier.hasNext()) { DateTime start = DateTime.Now; List <Card> cards = identifier.next(); setText(renderer, toText(cards)); Console.WriteLine("iteration took " + DateTime.Now.Subtract(start).TotalSeconds + "s"); Console.ReadKey(); } }
public static void Main(string[] args) { Log.SetLevel(Log.Level.FINE); // patterns List <CardPattern> patterns = CardReader.readCardsFromResources(); Console.WriteLine("read " + patterns.Count + " candidate patterns"); // renderer ImagesRenderer renderer = newImageRenderer(); // iterator Iterator <Image> wait; if (USE_SCREEN) { Iterator <Image> screen = new ScreenImageIterator(new Win32Control(), new Rectangle(400, 400, 300, 80)); wait = new WaitDeltaImageIterator(screen); } else { wait = new MockIterator(toImage(new Bitmap("test/cards_56.png"))); } Iterator <Image> low = new ReduceColorIterator(wait, new ColorReducers.Card()); // proxy IteratorProxy <Image> proxyIter = new IteratorProxy <Image>(low); proxyIter.handler += delegate(Image next) { setImage(renderer, toBitmap(next)); }; Console.WriteLine("initialized iterator"); // identifier CardStrategy strategy = new CardStrategySlow(patterns); CardIdentifierIterator identifier = new CardIdentifierIterator(proxyIter, strategy.identifyRegions, strategy.identifyCards); // go while (identifier.hasNext()) { DateTime start = DateTime.Now; List <Card> cards = identifier.next(); setText(renderer, toText(cards)); Console.WriteLine("iteration took " + DateTime.Now.Subtract(start).TotalSeconds + "s"); } }
public static void Main(string[] args) { // screen + reduce + invert Iterator <Image> screenIter = new MockIterator(toImage(new Bitmap("player10.png"))); //Iterator<Image> screenIter = new ScreenImageIterator(new Rectangle(100, 400, 80, 30)); Iterator <Image> reduceIter = new ReduceColorIterator(screenIter, new ColorReducers.TextBox()); Iterator <Image> invertIter = new InvertColorIterator(reduceIter, Color.White, Color.Black); Iterator <Image> replaceIter = new ReplaceColorIterator(invertIter, Color.White, Color.Transparent); // proxy ImagesRenderer renderer = newImageRenderer(); IteratorProxy <Image> proxyIter = new IteratorProxy <Image>(replaceIter); ColorReplacer replacer = new ColorReplacer(Color.Transparent, Color.Cyan); proxyIter.handler += delegate(Image next) { setImage(renderer, toBitmap(replacer.replace(next))); }; // partition + decompose + crop Iterator <List <List <Image> > > patitionIter = new ImageHoriPartitionIterator(proxyIter); Iterator <List <List <Image> > > decomposeIter = new DecomposeImageIterator(patitionIter); Iterator <List <List <Image> > > cropIter = new CropImageIterator(decomposeIter); // patterns List <CharPattern> patterns = CharReader.readCharsFromResourcesPlayer(); CharIdentifier identifier = new CharIdentifier(patterns); // identify int count = 0; while (cropIter.hasNext()) { List <List <Image> > images = cropIter.next(); foreach (List <Image> line in images) { foreach (Image chr in line) { String chars = identifyChars(identifier, chr, ref count); Console.Write(chars); } Console.WriteLine(); } } }
public static void Main(string[] args) { // patterns List <CardPattern> patterns = CardReader.readCardsFromResources(); Console.WriteLine("read " + patterns.Count + " candidate patterns"); // renderer ImagesRenderer renderer = newImageRenderer(); // iterator Iterator <Image> wait = new MockIterator(toImage(new Bitmap("hand.png"))); //Iterator<Image> screen = new ScreenImageIterator(new Rectangle(400, 400, 300, 80)); //Iterator<Image> wait = new WaitDeltaImageIterator(screen); Iterator <Image> low = new ReduceColorIterator(wait, new ColorReducers.Card()); // proxy IteratorProxy <Image> proxyIter = new IteratorProxy <Image>(low); proxyIter.handler += delegate(Image next) { setImage(renderer, toBitmap(next)); }; Console.WriteLine("initialized iterator"); // identifier PocketIdentifier identifier = new PocketIdentifier(patterns); // go while (proxyIter.hasNext()) { Image screen = proxyIter.next(); DateTime start = DateTime.Now; List <Card> hand = identifier.identifyCards(screen); double ms = DateTime.Now.Subtract(start).TotalMilliseconds; Console.WriteLine("identification took " + ms + "ms"); Console.WriteLine(toText(hand)); } }