// Add new glyph collection private void newToolStripMenuItem_Click(object sender, EventArgs e) { NewGlyphCollectionForm newCollectionForm = new NewGlyphCollectionForm(glyphDatabases.GetDatabaseNames( )); if (newCollectionForm.ShowDialog( ) == DialogResult.OK) { string name = newCollectionForm.CollectionName; int size = newCollectionForm.GlyphSize; GlyphDatabase db = new GlyphDatabase(size); try { glyphDatabases.AddGlyphDatabase(name, db); // add new item to list view ListViewItem lvi = glyphCollectionsList.Items.Add(name); lvi.SubItems.Add(string.Format("{0}x{1}", size, size)); lvi.Name = name; } catch { ShowErrorBox(string.Format("A glyph database with the name '{0}' already exists.", name)); } } }
/// <summary> /// Initialises the GlyphDatabase and the GlyphRecogniser, used /// to detect any Glyphs in a given Bitmap image provided by the device used. /// </summary> /// <param name="windowHandle"></param> public GlyphsInput(String windowName) : base(windowName) { glyphDatabase = new GlyphDatabase(5); recognizer = new GlyphRecognizer(glyphDatabase); imageAvailable = false; }
// Load information about databases and glyphs from XML reader public void Load( XmlTextReader xmlIn ) { // read to the first node xmlIn.Read( ); int startingDept = xmlIn.Depth; while ( ( xmlIn.Name == databaseTag ) && ( xmlIn.NodeType == XmlNodeType.Element ) && ( xmlIn.Depth >= startingDept ) ) { string name = xmlIn.GetAttribute( nameAttr ); int size = int.Parse( xmlIn.GetAttribute( sizeAttr ) ); int count = int.Parse( xmlIn.GetAttribute( countAttr ) ); // create new database and add it to collection GlyphDatabase db = new GlyphDatabase( size ); AddGlyphDatabase( name, db ); if ( count > 0 ) { // read all glyphs for ( int i = 0; i < count; i++ ) { // read to the next glyph node xmlIn.Read( ); string glyphName = xmlIn.GetAttribute( nameAttr ); string glyphStrData = xmlIn.GetAttribute( dataAttr ); // create new glyph and add it database Glyph glyph = new Glyph( glyphName, GlyphDataFromString( glyphStrData, size ) ); db.Add( glyph ); // read visualization params GlyphVisualizationData visualization = new GlyphVisualizationData( Color.Red ); visualization.ImageName = xmlIn.GetAttribute( iconAttr ); visualization.ModelName = xmlIn.GetAttribute( modelAttr ); string colorStr = xmlIn.GetAttribute( colorAttr ); if ( colorStr != null ) { string[] rgbStr = colorStr.Split( ',' ); visualization.Color = Color.FromArgb( int.Parse( rgbStr[0] ), int.Parse( rgbStr[1] ), int.Parse( rgbStr[2] ) ); } glyph.UserData = visualization; } // read to the end tag xmlIn.Read( ); } // read to the next node xmlIn.Read( ); } }
// Load information about databases and glyphs from XML reader public void Load(XmlTextReader xmlIn) { // read to the first node xmlIn.Read( ); int startingDept = xmlIn.Depth; while ((xmlIn.Name == databaseTag) && (xmlIn.NodeType == XmlNodeType.Element) && (xmlIn.Depth >= startingDept)) { string name = xmlIn.GetAttribute(nameAttr); int size = int.Parse(xmlIn.GetAttribute(sizeAttr)); int count = int.Parse(xmlIn.GetAttribute(countAttr)); // create new database and add it to collection GlyphDatabase db = new GlyphDatabase(size); AddGlyphDatabase(name, db); if (count > 0) { // read all glyphs for (int i = 0; i < count; i++) { // read to the next glyph node xmlIn.Read( ); string glyphName = xmlIn.GetAttribute(nameAttr); string glyphStrData = xmlIn.GetAttribute(dataAttr); // create new glyph and add it database Glyph glyph = new Glyph(glyphName, GlyphDataFromString(glyphStrData, size)); db.Add(glyph); // read visualization params GlyphVisualizationData visualization = new GlyphVisualizationData(Color.Red); visualization.ImageName = xmlIn.GetAttribute(iconAttr); visualization.ModelName = xmlIn.GetAttribute(modelAttr); string colorStr = xmlIn.GetAttribute(colorAttr); if (colorStr != null) { string[] rgbStr = colorStr.Split(','); visualization.Color = Color.FromArgb( int.Parse(rgbStr[0]), int.Parse(rgbStr[1]), int.Parse(rgbStr[2])); } glyph.UserData = visualization; } // read to the end tag xmlIn.Read( ); } // read to the next node xmlIn.Read( ); } }
public Form1() { InitializeComponent(); var databaseBuilder = new GlyphDatabaseBuilder(); _glyphDatabase = databaseBuilder.Database; _imageProcessor = new GlyphImageProcessor(_glyphDatabase); }
public FindDisplay() { // create glyph database for 5x5 glyphs var glyphDatabase = new GlyphDatabase(5); try { using (var stream = new StreamReader("Resources/TagDefinitions.txt")) { String line; do { line = stream.ReadLine(); if (line != null) { var tokens = line.Split(' '); var tagId = tokens[0]; var code = tokens[1]; var matrix = new byte[5, 5]; var i = 0; for (var y = 0; y < 5; y++) { for (var x = 0; x < 5; x++) { matrix[y, x] = byte.Parse(code.Substring(i++, 1)); } } glyphDatabase.Add(new Glyph(tagId, matrix)); } } while (line != null); } _glyphRecognizer = new GlyphRecognizer(glyphDatabase) { MaxNumberOfGlyphsToSearch = 1 }; _glyphTable = new GlyphMetadata[glyphDatabase.Count]; PropertyChanged += (s, e) => { switch (e.PropertyName) { case MinFramesPropertyName: _glyphTable = new GlyphMetadata[glyphDatabase.Count]; break; } }; } catch (Exception e) { LogFormat(e + e.Message + e.StackTrace); } }
// Add glyph database to collection public void AddGlyphDatabase(string name, GlyphDatabase db) { if (!dbs.ContainsKey(name)) { dbs.Add(name, db); } else { throw new ApplicationException("A glyph database with such name already exists : " + name); } }
// Add glyph database to collection public void AddGlyphDatabase( string name, GlyphDatabase db ) { if ( !dbs.ContainsKey( name ) ) { dbs.Add( name, db ); } else { throw new ApplicationException( "A glyph database with such name already exists : " + name ); } }
public GlyphDecoder() { // create glyph database for 5x5 glyphs GlyphDatabase glyphDatabase = new GlyphDatabase(5); try { using (StreamReader sr = new StreamReader("Resources/TagDefinitions.txt")) { String line; do { line = sr.ReadLine(); if (line != null) { var tokens = line.Split(' '); var tagID = tokens[0]; var code = tokens[1]; var matrix = new byte[5, 5]; int i = 0; for (int y = 0; y < 5; y++) { for (int x = 0; x < 5; x++) { matrix[y, x] = byte.Parse(code.Substring(i++, 1)); } } glyphDatabase.Add(new Glyph(tagID, matrix)); } } while (line != null); } _glyphRecognizer = new GlyphRecognizer(glyphDatabase); _glyphRecognizer.MaxNumberOfGlyphsToSearch = GLYPHSTOSEARCHFOR; PropertyChanged += (s, e) => { switch (e.PropertyName) { case MinFramesPropertyName: _glyphTable = new GlyphMetadata[GLYPHCOUNT]; break; } }; } catch (Exception e) { LogFormat(e + e.Message + e.StackTrace); } }
//public MainWindow() //{ // WindowInit(); //} private void WindowInit(Gallery currentGallery) { InitializeComponent(); CurrentGallery = currentGallery; FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); camera = new VideoCaptureDevice(videoDevices[0].MonikerString); camera.NewFrame += new NewFrameEventHandler(camera_NewFrame); camera.Start(); glyphDatabase = new GlyphDatabase(5); //BoxVisual3D box = new BoxVisual3D(); //Point3D position = new Point3D(3, 4, 5); //Point3D.Transform position = new TranslateTransform3D(new Vector3(3, 4, 5)); //box.Center = position; //viewPort3d.Children.Add(box); //TranslateManipulator manipulator1 = new TranslateManipulator(); //manipulator1.Bind(box); //manipulator1.Color = Colors.Red; //manipulator1.Direction = new Vector3D(1, 0, 0); //manipulator1.Diameter = 0.1; //manipulator1.Position = position; //viewPort3d.Children.Add(manipulator1); String glyphInformationPath = CurrentGallery.UrlPrefix + "\\" + CurrentGallery.GlyphsInformation; String json = File.ReadAllText(@glyphInformationPath); dynamic dynJson = JsonConvert.DeserializeObject(json); List <HelpGlyph> glyphsFromJson = JsonConvert.DeserializeObject <List <HelpGlyph> >(json); createGlyphDatabase(glyphsFromJson); //glyphDatabase = new GlyphDatabase(5); //glyphDatabase.Add(new Glyph("glyph1", new byte[5,5]{ // {0,0,0,0,0}, // {0,0,1,0,0}, // {0,1,1,1,0}, // {0,0,0,1,0}, // {0,0,0,0,0} //})); //Za suzdavane na json s glyphs //String testJson = JsonConvert.SerializeObject(glyphDatabase); //Console.WriteLine(testJson); //Model3DGroup group = new ModelImporter().Load(@"C:\\deer-3ds.3ds"); //mod = new FileModelVisual3D(); //mod.ModelLoaded += new RoutedEventHandler(mod_ModelLoaded); //mod.Source = "C:\\deer-3ds.3ds"; }
// Refresh the list displaying available databases of glyphss private void RefreshListOfGlyphDatabases( ) { glyphCollectionsList.Items.Clear( ); List <string> dbNames = glyphDatabases.GetDatabaseNames( ); foreach (string name in dbNames) { GlyphDatabase db = glyphDatabases[name]; ListViewItem lvi = glyphCollectionsList.Items.Add(name); lvi.Name = name; lvi.SubItems.Add(string.Format("{0}x{1}", db.Size, db.Size)); } }
// Activate glyph database with the specified name private void ActivateGlyphDatabase(string name) { ListViewItem lvi; // deactivate previous database if (activeGlyphDatabase != null) { lvi = GetListViewItemByName(glyphCollectionsList, activeGlyphDatabaseName); if (lvi != null) { Font font = new Font(lvi.Font, FontStyle.Regular); lvi.Font = font; } } // activate new database activeGlyphDatabaseName = name; if (name != null) { try { activeGlyphDatabase = glyphDatabases[name]; lvi = GetListViewItemByName(glyphCollectionsList, name); if (lvi != null) { Font font = new Font(lvi.Font, FontStyle.Bold); lvi.Font = font; } } catch { } } else { activeGlyphDatabase = null; } // set the database to image processor ... imageProcessor.GlyphDatabase = activeGlyphDatabase; // ... and show it to user RefreshListOfGlyps( ); }
public Form1() { InitializeComponent(); AppGlobals.Form = this; var databaseBuilder = new GlyphDatabaseBuilder(); _glyphDatabase = databaseBuilder.Database; _imageProcessor = new GlyphImageProcessor(_glyphDatabase); Task.Run(() => { var engine = new RobotEngine(); AppGlobals.Robot = new Robot(engine); }); }
public MainWindow() { InitializeComponent(); GlyphDatabase glyphDatabase = new GlyphDatabase(5); glyphDatabase.Add(new Glyph("Glider", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 }, })); _glyphRecognizer = new GlyphRecognizer(5); _glyphRecognizer.GlyphDatabase = glyphDatabase; InitializeCapturer(); InitializeComboBox_Webcams(); if (ComboBox_Webcams.Items.Count > 0) { ComboBox_Webcams.SelectedIndex = 0; } }
public GlyphDatabaseBuilder() { Database = new GlyphDatabase(5); // 1 Database.Add(new Glyph("Влево", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 2 Database.Add(new Glyph("Вправо", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 3 Database.Add(new Glyph("Вперед", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 4 Database.Add(new Glyph("Назад", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 5 Database.Add(new Glyph("Бум", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 1, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); //// 6 //Database.Add(new Glyph("Динозавр", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 1, 0, 1, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 0, 0, 0} //})); //// 7 //Database.Add(new Glyph("Корова", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 1, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 0, 0, 0} //})); //// 8 //Database.Add(new Glyph("Дельфин", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 0, 1, 0, 0}, // {0, 1, 1, 0, 0}, // {0, 1, 1, 0, 0}, // {0, 0, 0, 0, 0} //})); }
public GlyphImageProcessor(GlyphDatabase database) { _recognizer = new GlyphRecognizer(database); }
public GlyphDatabaseBuilder() { Database = new GlyphDatabase(5); // 1 Database.Add(new Glyph("Кролик", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 0, 0} })); // 2 Database.Add(new Glyph("Слон", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 0, 0} })); // 3 Database.Add(new Glyph("Белка", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 4 Database.Add(new Glyph("Динозавр", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 0, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 5 Database.Add(new Glyph("Корова", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 6 Database.Add(new Glyph("Змея", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 7 Database.Add(new Glyph("Выхухоль", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 0, 0, 0} })); // 8 Database.Add(new Glyph("Дельфин", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 1, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 0, 0} })); }
// Add new glyph collection private void newToolStripMenuItem_Click( object sender, EventArgs e ) { NewGlyphCollectionForm newCollectionForm = new NewGlyphCollectionForm( glyphDatabases.GetDatabaseNames( ) ); if ( newCollectionForm.ShowDialog( ) == DialogResult.OK ) { string name = newCollectionForm.CollectionName; int size = newCollectionForm.GlyphSize; GlyphDatabase db = new GlyphDatabase( size ); try { glyphDatabases.AddGlyphDatabase( name, db ); // add new item to list view ListViewItem lvi = glyphCollectionsList.Items.Add( name ); lvi.SubItems.Add( string.Format( "{0}x{1}", size, size ) ); lvi.Name = name; } catch { ShowErrorBox( string.Format( "A glyph database with the name '{0}' already exists.", name ) ); } } }
/// <summary> /// Refresh the list displaying available databases of glyphss /// </summary> private void LoadGlyphDatabases5() { const string dbName = "ExampleSize5"; const int glyphSize = 5; // Create glyph. string glyphName1 = "Test1"; byte[,] glyphData1 = new byte[glyphSize, glyphSize] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0} }; Glyph testGlyph1 = new Glyph(glyphName1, glyphData1); testGlyph1.UserData = new GlyphVisualizationData(Color.Purple); // Create glyph. string glyphName2 = "Test2"; byte[,] glyphData2 = new byte[glyphSize, glyphSize] { {0, 0, 0, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0} }; Glyph testGlyph2 = new Glyph(glyphName2, glyphData2); testGlyph2.UserData = new GlyphVisualizationData(Color.Blue); // Create glyph. string glyphName3 = "Test3"; byte[,] glyphData3 = new byte[glyphSize, glyphSize] { {0, 0, 0, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 0, 0} }; Glyph testGlyph3 = new Glyph(glyphName3, glyphData3); testGlyph3.UserData = new GlyphVisualizationData(Color.Green); // Create database. GlyphDatabase lGlyphDatabase = new GlyphDatabase(glyphSize); // Add glyph to database. lGlyphDatabase.Add(testGlyph1); lGlyphDatabase.Add(testGlyph2); lGlyphDatabase.Add(testGlyph3); // Add database. this.glyphDatabases.AddGlyphDatabase(dbName, lGlyphDatabase); this.recognizer = new GlyphRecognizer(glyphSize); // set the database to image processor ... this.recognizer.GlyphDatabase = this.glyphDatabases[dbName]; ; }
/// <summary> /// Refresh the list displaying available databases of glyphss /// </summary> private void LoadGlyphDatabases12() { const int glyphSize = 12; // Create glyph. string glyphName4 = "Test4"; byte[,] glyphData4 = new byte[glyphSize, glyphSize] { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0}, {0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }; Glyph testGlyph4 = new Glyph(glyphName4, glyphData4); testGlyph4.UserData = new GlyphVisualizationData(Color.Purple); // Create database. const string dbName = "ExampleSize12"; // Create database. GlyphDatabase lGlyphDatabase = new GlyphDatabase(glyphSize); // Add glyph to database. lGlyphDatabase.Add(testGlyph4); // Add database. this.glyphDatabases.AddGlyphDatabase(dbName, lGlyphDatabase); this.recognizer = new GlyphRecognizer(glyphSize); // set the database to image processor ... this.recognizer.GlyphDatabase = this.glyphDatabases[dbName]; }
public GlyphDatabaseBuilder() { Database = new GlyphDatabase(5); // 1 Database.Add(new Glyph("Влево", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 0, 0} })); // 2 Database.Add(new Glyph("Вправо", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 0, 0} })); // 3 Database.Add(new Glyph("Вперед", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 4 Database.Add(new Glyph("Назад", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} })); // 5 Database.Add(new Glyph("Бум", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 1, 0}, {0, 0, 1, 1, 0}, {0, 0, 0, 0, 0} })); //// 6 //Database.Add(new Glyph("Динозавр", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 1, 0, 1, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 0, 0, 0} //})); //// 7 //Database.Add(new Glyph("Корова", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 1, 0, 0}, // {0, 1, 1, 1, 0}, // {0, 0, 0, 0, 0} //})); //// 8 //Database.Add(new Glyph("Дельфин", new byte[,] //{ // {0, 0, 0, 0, 0}, // {0, 0, 1, 0, 0}, // {0, 1, 1, 0, 0}, // {0, 1, 1, 0, 0}, // {0, 0, 0, 0, 0} //})); }
// Activate glyph database with the specified name private void ActivateGlyphDatabase(string name) { ListViewItem lvi; if (activeGlyphDatabase != null) { lvi = GetListViewItemByName(glyphCollectionsList, activeGlyphDatabaseName); if (lvi != null) { Font font = new Font(lvi.Font, FontStyle.Regular); lvi.Font = font; } } activeGlyphDatabaseName = name; if (name != null) { try { activeGlyphDatabase = glyphDatabases[name]; lvi = GetListViewItemByName(glyphCollectionsList, name); if (lvi != null) { Font font = new Font(lvi.Font, FontStyle.Bold); lvi.Font = font; } } catch { } } else { activeGlyphDatabase = null; } imageProcessor.GlyphDatabase = activeGlyphDatabase; RefreshListOfGlyps(); }
public GlyphDatabaseBuilder() { Database = new GlyphDatabase(5); // 1 Database.Add(new Glyph("Кролик", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 2 Database.Add(new Glyph("Слон", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 3 Database.Add(new Glyph("Белка", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 4 Database.Add(new Glyph("Динозавр", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 1, 0, 1, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 5 Database.Add(new Glyph("Корова", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 6 Database.Add(new Glyph("Змея", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); // 7 Database.Add(new Glyph("Выхухоль", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0 } })); // 8 Database.Add(new Glyph("Дельфин", new byte[, ] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 0, 1, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); }
/// <summary> /// Initializes a new instance of the <see cref="GlyphRecognizer"/> class. /// </summary> /// /// <param name="glyphDatabase"><see cref="GlyphRecognizer">Database of glyphs</see> to recognize.</param> /// public GlyphRecognizer( GlyphDatabase glyphDatabase ) : this() { GlyphDatabase = glyphDatabase; }
// Activate glyph database with the specified name private void ActivateGlyphDatabase( string name ) { ListViewItem lvi; // deactivate previous database if ( activeGlyphDatabase != null ) { lvi = GetListViewItemByName( glyphCollectionsList, activeGlyphDatabaseName ); if ( lvi != null ) { Font font = new Font( lvi.Font, FontStyle.Regular ); lvi.Font = font; } } // activate new database activeGlyphDatabaseName = name; if ( name != null ) { try { activeGlyphDatabase = glyphDatabases[name]; lvi = GetListViewItemByName( glyphCollectionsList, name ); if ( lvi != null ) { Font font = new Font( lvi.Font, FontStyle.Bold ); lvi.Font = font; } } catch { } } else { activeGlyphDatabase = null; } // set the database to image processor ... imageProcessor.GlyphDatabase = activeGlyphDatabase; // ... and show it to user RefreshListOfGlyps( ); }
public GlyphImageProcessor(int size) { recognizer = new GlyphRecognizer(size); GlyphVisualizationData visualizationData; byte[,] data; GlyphDatabase gDB = new GlyphDatabase(5); if (size == 5) { #region Monitors //Monitor 1 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S1 = new Glyph("Monitor1", data); visualizationData = new GlyphVisualizationData(Color.Red); S1.UserData = visualizationData; //Monitor 2 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S2 = new Glyph("Monitor2", data); visualizationData = new GlyphVisualizationData(Color.Red); S2.UserData = visualizationData; //Monitor 3 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S3 = new Glyph("Monitor3", data); visualizationData = new GlyphVisualizationData(Color.Red); S3.UserData = visualizationData; //Monitor 4 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 1; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S4 = new Glyph("Monitor4", data); visualizationData = new GlyphVisualizationData(Color.Red); S4.UserData = visualizationData; //Monitor 5 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S5 = new Glyph("Monitor5", data); visualizationData = new GlyphVisualizationData(Color.Red); S5.UserData = visualizationData; //Monitor 6 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S6 = new Glyph("Monitor6", data); visualizationData = new GlyphVisualizationData(Color.Red); S6.UserData = visualizationData; //Monitor 7 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S7 = new Glyph("Monitor7", data); visualizationData = new GlyphVisualizationData(Color.Red); S7.UserData = visualizationData; //Monitor 8 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 1; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 0; data[2, 3] = 1; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S8 = new Glyph("Monitor8", data); visualizationData = new GlyphVisualizationData(Color.Red); S8.UserData = visualizationData; //Monitor 9 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 0; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 0; data[2, 3] = 1; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S9 = new Glyph("Monitor9", data); visualizationData = new GlyphVisualizationData(Color.Red); S9.UserData = visualizationData; //Monitor 10 data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 1; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 0; data[2, 3] = 0; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph S10 = new Glyph("Monitor10", data); visualizationData = new GlyphVisualizationData(Color.Red); S10.UserData = visualizationData; #endregion Monitors #region Roomba glyph //Roomba data = new byte[5, 5]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; Glyph roomba = new Glyph("Roomba", data); visualizationData = new GlyphVisualizationData(Color.Yellow); roomba.UserData = visualizationData; #endregion Roomba glyph gDB = new GlyphDatabase(5); gDB.Add(S1); gDB.Add(S2); gDB.Add(S3); gDB.Add(S4); gDB.Add(S5); gDB.Add(S6); gDB.Add(S7); gDB.Add(S8); gDB.Add(S9); gDB.Add(S10); gDB.Add(roomba); } else if (size == 6) { Color MarkerColor = Color.GreenYellow; #region Objects 6*6 glype data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 0; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 0; data[2, 3] = 1; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 0; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 1; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o1 = new Glyph("Marker_6_1", data); visualizationData = new GlyphVisualizationData(MarkerColor); o1.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 0; data[2, 3] = 1; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 0; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o2 = new Glyph("Marker_6_2", data); visualizationData = new GlyphVisualizationData(MarkerColor); o2.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 0; data[1, 2] = 1; data[1, 3] = 1; data[1, 4] = 0; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 1; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 0; data[3, 4] = 0; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 1; data[4, 3] = 1; data[4, 4] = 0; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o3 = new Glyph("Marker_6_3", data); visualizationData = new GlyphVisualizationData(MarkerColor); o3.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 1; data[1, 4] = 0; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 0; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o4 = new Glyph("Marker_6_4", data); visualizationData = new GlyphVisualizationData(MarkerColor); o4.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 1; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o5 = new Glyph("Marker_6_5", data); visualizationData = new GlyphVisualizationData(MarkerColor); o5.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 0; data[2, 3] = 1; data[2, 4] = 1; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 0; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o6 = new Glyph("Marker_6_6", data); visualizationData = new GlyphVisualizationData(MarkerColor); o6.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 0; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 0; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 0; data[4, 4] = 0; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o7 = new Glyph("Marker_6_7", data); visualizationData = new GlyphVisualizationData(MarkerColor); o7.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 0; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 0; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 1; data[4, 3] = 0; data[4, 4] = 0; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o8 = new Glyph("Marker_6_8", data); visualizationData = new GlyphVisualizationData(MarkerColor); o8.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 0; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 0; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 1; data[3, 4] = 0; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 0; data[4, 2] = 1; data[4, 3] = 0; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o9 = new Glyph("Marker_6_9", data); visualizationData = new GlyphVisualizationData(MarkerColor); o9.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 0; data[1, 2] = 1; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 1; data[2, 3] = 1; data[2, 4] = 1; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 0; data[3, 2] = 1; data[3, 3] = 1; data[3, 4] = 0; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 0; data[4, 3] = 1; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o10 = new Glyph("Marker_6_10", data); visualizationData = new GlyphVisualizationData(MarkerColor); o10.UserData = visualizationData; data = new byte[6, 6]; data[0, 0] = 0; data[0, 1] = 0; data[0, 2] = 0; data[0, 3] = 0; data[0, 4] = 0; data[0, 5] = 0; data[1, 0] = 0; data[1, 1] = 1; data[1, 2] = 0; data[1, 3] = 0; data[1, 4] = 1; data[1, 5] = 0; data[2, 0] = 0; data[2, 1] = 1; data[2, 2] = 0; data[2, 3] = 0; data[2, 4] = 1; data[2, 5] = 0; data[3, 0] = 0; data[3, 1] = 1; data[3, 2] = 0; data[3, 3] = 0; data[3, 4] = 1; data[3, 5] = 0; data[4, 0] = 0; data[4, 1] = 1; data[4, 2] = 1; data[4, 3] = 1; data[4, 4] = 1; data[4, 5] = 0; data[5, 0] = 0; data[5, 1] = 0; data[5, 2] = 0; data[5, 3] = 0; data[5, 4] = 0; data[5, 5] = 0; Glyph o11 = new Glyph("Marker_6_11", data); visualizationData = new GlyphVisualizationData(MarkerColor); o11.UserData = visualizationData; #endregion objects 6*6 glyph gDB = new GlyphDatabase(6); gDB.Add(o1); gDB.Add(o2); gDB.Add(o3); gDB.Add(o4); gDB.Add(o5); gDB.Add(o6); gDB.Add(o7); gDB.Add(o8); gDB.Add(o9); gDB.Add(o10); gDB.Add(o11); } GlyphDatabase = gDB; }
// Used to create the glyphs and the GRATF glyph recognizer private void CreateGlyphRecognizer() { GlyphDatabase glyphDatabase = new GlyphDatabase(5); // Create glyph database for 5x5 glyphs. Ones represent white squares, 0 black. // Note that the ID needs to match the name of the robot glyphDatabase.Add(new Glyph("0", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("1", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("2", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("3", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("4", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("5", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("6", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("7", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0 }, { 0, 1, 1, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("8", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 1, 0, 0, 0 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 0, 0 } })); glyphDatabase.Add(new Glyph("9", new byte[5, 5] { { 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0 }, { 0, 0, 0, 1, 0 }, { 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0 } })); recognizer = new GlyphRecognizer(glyphDatabase); recognizer.MaxNumberOfGlyphsToSearch = glyphDatabase.Count; }
private void initGlyphs() { database = new GlyphDatabase(5); Glyph glyph1 = new Glyph("1 ", new byte[,] { {0, 0, 0, 0, 0}, {0, 0, 1, 1, 0}, {0, 1, 0, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} }); Glyph glyph2 = new Glyph("2 ", new byte[,] { {0, 0, 0, 0, 0}, {0, 1, 0, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} }); database.Add(glyph1); database.Add(glyph2); recogniser = new GlyphRecognizer(database); }