示例#1
0
        void createGlyphDatabase(List <HelpGlyph> glyphsFromJson)
        {
            foreach (var glyph in glyphsFromJson)
            {
                byte[,] currentArrayByte = new byte[5, 5];
                int  i = 0;
                int  j = 0;
                byte currentByte;
                Type type = glyph.GetType();

                foreach (var row in glyph.Data)
                {
                    type = currentArrayByte.GetType();
                    foreach (var element in row)
                    {
                        currentByte            = Convert.ToByte(element);
                        currentArrayByte[i, j] = currentByte;
                        j++;
                        type = currentByte.GetType();
                    }
                    j = 0;
                    i++;
                }
                glyphDatabase.Add(new Glyph(glyph.Name, currentArrayByte));
                currentArrayByte = null;
            }
        }
        // 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( );
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        // Add new glyph to the active collection
        private void newGlyphToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (activeGlyphDatabase != null)
            {
                // create new glyph ...
                Glyph glyph = new Glyph(string.Empty, activeGlyphDatabase.Size);
                glyphNameInEditor = string.Empty;
                // ... and pass it the glyph editting form
                EditGlyphForm glyphForm = new EditGlyphForm(glyph, activeGlyphDatabase.GetGlyphNames( ));
                glyphForm.Text = "New Glyph";

                // set glyph data checking handler
                glyphForm.SetGlyphDataCheckingHandeler(new GlyphDataCheckingHandeler(CheckGlyphData));

                if (glyphForm.ShowDialog( ) == DialogResult.OK)
                {
                    try
                    {
                        lock ( sync )
                        {
                            // add glyph to active database
                            activeGlyphDatabase.Add(glyph);
                        }

                        // create an icon for it
                        glyphsImageList.Images.Add(glyph.Name, CreateGlyphIcon(glyph));

                        // add it to list view
                        ListViewItem lvi = glyphList.Items.Add(glyph.Name);
                        lvi.ImageKey = glyph.Name;
                    }
                    catch
                    {
                        ShowErrorBox(string.Format("A glyph with the name '{0}' already exists in the database.", glyph.Name));
                    }
                }
            }
        }
        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;
            }
        }
        // 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;
        }
示例#8
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 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}
            }));
        }
示例#10
0
        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;
        }
示例#11
0
        /// <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]; ;
        }
示例#12
0
        /// <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, 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 }
            }));
        }
示例#14
0
        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);
            }
        }
示例#15
0
        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);
        }
示例#16
0
        // 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( );
            }
        }
示例#17
0
        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 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}
            //}));
        }