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; }
public void VisualizeGlyph(Bitmap bitmap, Dictionary <string, string> names) { lock (this) { if (foundGlyphs.Count > 0) { if ((visualizationType == VisualizationType.BorderOnly) || (visualizationType == VisualizationType.Name)) { Graphics g = Graphics.FromImage(bitmap); // highlight each found glyph foreach (ExtractedGlyphData glyphData in foundGlyphs) { if ((glyphData.RecognizedGlyph == null) || (glyphData.RecognizedGlyph.UserData == null)) { // highlight with default pen g.DrawPolygon(defaultPen, ToPointsArray(glyphData.Quadrilateral)); } else { GlyphVisualizationData visualization = (GlyphVisualizationData)glyphData.RecognizedGlyph.UserData; Pen pen = new Pen(visualization.Color, 3); // highlight border g.DrawPolygon(pen, ToPointsArray(glyphData.Quadrilateral)); // show glyph's name if (visualizationType == VisualizationType.Name) { // get glyph's center point AForge.IntPoint minXY, maxXY; PointsCloud.GetBoundingRectangle(glyphData.Quadrilateral, out minXY, out maxXY); AForge.IntPoint center = (minXY + maxXY) / 2; string GyphName = ""; if (names.ContainsKey(glyphData.RecognizedGlyph.Name)) { GyphName = names[glyphData.RecognizedGlyph.Name]; } // glyph's name size SizeF nameSize = g.MeasureString(GyphName, defaultFont); // paint the name Brush brush = new SolidBrush(visualization.Color); g.DrawString(GyphName, defaultFont, brush, new Point(center.X - (int)nameSize.Width / 2, center.Y - (int)nameSize.Height / 2)); brush.Dispose( ); } pen.Dispose( ); } } } } } }