public override int Run(String[] remainingArguments) { ReferenceCardDatabase database = new ReferenceCardDatabase(); using (Stream stream = File.OpenRead(DatabasePath)) { database.Import(stream); } ReferenceCardRadialHashDetector detector = new ReferenceCardRadialHashDetector(); using (Stream stream = File.OpenRead(DetectorPath)) { detector.Import(stream); } double similarity; int cardID = detector.Detect(ImagePath, out similarity); if (cardID == -1) { Console.WriteLine("No card detected"); return(1); } IReferenceCard card = database.Get(cardID); Console.WriteLine("Card detected: " + cardID + " - " + card.Name + ", similarity " + similarity); return(0); }
public override int Run(String[] remainingArguments) { ReferenceCardDatabase database = new ReferenceCardDatabase(); ReferenceCardRadialHashDetector detector = new ReferenceCardRadialHashDetector(); using (StreamReader streamReader = File.OpenText(GathererDatabasePath)) using (JsonTextReader reader = new JsonTextReader(streamReader)) { JObject root = JToken.ReadFrom(reader) as JObject; JObject cards = root.GetValue("MTGCardInfo") as JObject; Dictionary <int, GathererCardData> cardDictionary = cards.ToObject <Dictionary <int, GathererCardData> >(); foreach (KeyValuePair <int, GathererCardData> pair in cardDictionary) { ReferenceCard card = new ReferenceCard { Name = pair.Value.name }; database.Add(pair.Key, card); } } String[] paths = Directory.GetFiles(GathererImagesPath, "*.jpg", SearchOption.AllDirectories); foreach (String path in paths) { String imageIDStr = Path.GetFileNameWithoutExtension(path); int imageID; if (int.TryParse(imageIDStr, out imageID)) { detector.AddHash(imageID, path); } } using (Stream stream = File.OpenWrite(ExportDatabasePath)) { database.Export(stream); } using (Stream stream = File.OpenWrite(ExportDetectorPath)) { detector.Export(stream); } return(0); }