/// <summary>
        /// Initialize control values
        /// </summary>
        private void InitialSettings()
        {
            if (FilterSettings == null)
                FilterSettings = new ColorFilter();

            pnlBorderColor.BackColor = FilterSettings.BorderColor;

            numMinHeight.Value = FilterSettings.MinHeight;
            numMinWidth.Value = FilterSettings.MinWidth;

            trackMinRed.Value = FilterSettings.Red.Min;
            trackMaxRed.Value = FilterSettings.Red.Max;

            trackMinGreen.Value = FilterSettings.Green.Min;
            trackMaxGreen.Value = FilterSettings.Green.Max;

            trackMinBlue.Value = FilterSettings.Blue.Min;
            trackMaxBlue.Value = FilterSettings.Blue.Max;

            txtMinRed.Text = FilterSettings.Red.Min.ToString();
            txtMaxRed.Text = FilterSettings.Red.Max.ToString();

            txtMinGreen.Text = FilterSettings.Green.Min.ToString();
            txtMaxGreen.Text = FilterSettings.Green.Max.ToString();

            txtMinBlue.Text = FilterSettings.Blue.Min.ToString();
            txtMaxBlue.Text = FilterSettings.Blue.Max.ToString();
            SetEventHandlers();
        }
 /// <summary>
 /// Find the objects in the image.
 /// </summary>
 /// <param name="image">The image to search for objects</param>
 /// <param name="filter">The filter with color</param>
 public void FindObjectsOfImage(System.Drawing.Image image, ColorFilter filter)
 {
     foreach (Rectangle item in this.GetObjectsCoordinates(image, filter))
     {
         Rectangle coord = new Rectangle();
         if (HasParentBlock(Squares, item, out coord))
         {
             facelets.Add(coord, filter.BorderColor);
         }
     }
 }
 /// <summary>
 /// Add a new ColorFilter object
 /// </summary>
 /// <param name="filter"></param>
 public void Add(ColorFilter filter)
 {
     try
     {
         int index = this.GetFilterIndex(filter.FilterID);
         List[index] = filter;
     }
     catch
     {
         List.Add(filter);
     }
 }
 /// <summary>
 /// Get the especific ColorFilter
 /// </summary>
 /// <param name="FilterID">string with the filter ID</param>
 /// <returns>Return, if found, the ColorFilter.</returns>
 public ColorFilter GetFilter(string FilterID)
 {
     ColorFilter filter = new ColorFilter();
     bool found = false;
     int i = 0;
     if (List.Count > 0)
     {
         while (!found && i < List.Count)
         {
             filter = (ColorFilter)List[i];
             found = filter.FilterID.Equals(FilterID);
             i++;
         }
     }
     if (!found)
         throw new InvalidOperationException("ColorFilter not found");
     return filter;
 }
        /// <summary>
        /// Translate a ColorFilter objet to XML.
        /// </summary>
        /// <param name="filter">ColorFilter to translate</param>
        /// <param name="xmlDoc">XmlDocument to append</param>
        /// <returns>Return the XmlElement with the ColorFilter translated</returns>
        private XmlElement TranslateToXML(ColorFilter filter, XmlDocument xmlDoc)
        {
            XmlElement element = xmlDoc.CreateElement("filter");
            element.SetAttribute("filterID", filter.FilterID);
            element.SetAttribute("minWidth", filter.MinWidth.ToString());
            element.SetAttribute("minHeight", filter.MinHeight.ToString());
            element.SetAttribute("borderColor", filter.BorderColor.ToArgb().ToString());

            XmlElement redEl = xmlDoc.CreateElement("red");
            redEl.SetAttribute("min", filter.Red.Min.ToString());
            redEl.SetAttribute("max", filter.Red.Max.ToString());

            XmlElement greenEl = xmlDoc.CreateElement("green");
            greenEl.SetAttribute("min", filter.Green.Min.ToString());
            greenEl.SetAttribute("max", filter.Green.Max.ToString());

            XmlElement blueEl = xmlDoc.CreateElement("blue");
            blueEl.SetAttribute("min", filter.Blue.Min.ToString());
            blueEl.SetAttribute("max", filter.Blue.Max.ToString());

            element.AppendChild(redEl);
            element.AppendChild(greenEl);
            element.AppendChild(blueEl);
            return element;
        }
        /// <summary>
        /// Translate a XmlNode into a ColorFilter object.
        /// </summary>
        /// <param name="element">XmlNode with the ColorFilter</param>
        /// <returns>Return the ColorFilter.</returns>
        private ColorFilter TranslateFromXML(XmlNode element)
        {
            ColorFilter filter = new ColorFilter();
            filter.FilterID = element.Attributes["filterID"].Value;
            filter.MinWidth = Int16.Parse(element.Attributes["minWidth"].Value);
            filter.MinHeight = Int16.Parse(element.Attributes["minHeight"].Value);
            filter.BorderColor = System.Drawing.Color.FromArgb(Int32.Parse(element.Attributes["borderColor"].Value));
            XmlNode redNode = element.ChildNodes[0];
            XmlNode greenNode = element.ChildNodes[1];
            XmlNode blueNode = element.ChildNodes[2];

            filter.Red.Min = Int32.Parse(redNode.Attributes["min"].Value);
            filter.Red.Max = Int32.Parse(redNode.Attributes["max"].Value);

            filter.Green.Min = Int32.Parse(greenNode.Attributes["min"].Value);
            filter.Green.Max = Int32.Parse(greenNode.Attributes["max"].Value);

            filter.Blue.Min = Int32.Parse(blueNode.Attributes["min"].Value);
            filter.Blue.Max = Int32.Parse(blueNode.Attributes["max"].Value);
            return filter;
        }
 /// <summary>
 /// Adds a filter to the collection
 /// </summary>
 /// <param name="filter">The filter to be added</param>
 public static void AddFilter(ColorFilter filter)
 {
     colorFilterCol.Add(filter);
 }
Example #8
0
 /// <summary>
 /// Links the picturebox objects to the respectives color filters
 /// </summary>
 private void LinkPictureToFilter()
 {
     foreach (Control item in groupImgProc.Controls)
     {
         if (item is PictureBox)
         {
             ColorFilter newFilter = new ColorFilter();
             newFilter.FilterID = item.Name;
             if (item.Name.Contains("Red"))
                 newFilter.BorderColor = Color.Red;
             else if (item.Name.Contains("Blue"))
                 newFilter.BorderColor = Color.Blue;
             else if (item.Name.Contains("Green"))
                 newFilter.BorderColor = Color.Green;
             else if (item.Name.Contains("Yellow"))
                 newFilter.BorderColor = Color.Yellow;
             else if (item.Name.Contains("Orange"))
                 newFilter.BorderColor = Color.Orange;
             else
                 newFilter.BorderColor = Color.White;
             StoredData.AddFilter(newFilter);
         }
     }
 }
Example #9
0
 /// <summary>
 /// Finds the objects of the image
 /// </summary>
 /// <param name="image">The image to look for objects</param>
 /// <param name="filter">The filter with the minHeight and minWidth</param>
 private void FindObjectsOfImage(Image image, ColorFilter filter)
 {
     ImageAnalyser analyser = new ImageAnalyser();
     Graphics g = Graphics.FromImage(picbVideoCapture.Image);
     List<Rectangle> blocks = analyser.GetSquares(CubeAnalyser.SourceImage, (int)numMinWidth.Value, (int)numMinHeight.Value);
     FindObjectsOfImage(image, filter, blocks, g, analyser);
 }
Example #10
0
 /// <summary>
 /// Find the objects in the image.
 /// </summary>
 /// <param name="image">The image to search for objects</param>
 /// <param name="filter">The filter with color</param>
 /// <param name="g">The Graphics to draw the rectangles</param>
 /// <param name="analyser">The ImageAnalyser to analysis the image</param>
 private void FindObjectsOfImage(Image image, ColorFilter filter, List<Rectangle> blocksFace, Graphics g, ImageAnalyser analyser)
 {
     Pen p = new Pen(filter.BorderColor, 3.0F);
     foreach (Rectangle item in analyser.GetObjectsCoordinates(image, filter))
     {
         VisualCubeBlock newFacelet = new VisualCubeBlock();
         newFacelet.Color = ColorTranslate.getFaceColorByColor(p.Color);
         Rectangle coord = new Rectangle();
         if (HasParentBlock(blocksFace, item, out coord))
         {
             newFacelet.Rectangle = coord;
             this.CurrentFace.AddBlock(newFacelet.Clone(), true);
             g.DrawRectangle(p, coord);
         }
         newFacelet.Dispose();
     }
 }
 /// <summary>
 /// Apply color filter in image.
 /// </summary>
 /// <param name="filter">ColorFilter object with the RGB weightining</param>
 /// <param name="img">Image to filter</param>
 /// <returns>Return a Bitmap object with the image filtered</returns>
 public Bitmap ApplyColorFilter(ColorFilter filter, System.Drawing.Image img)
 {
     Bitmap filteredImg = new Bitmap((System.Drawing.Image)img.Clone());
     filter.ApplyInPlace(filteredImg);
     return filteredImg;
 }
 /// <summary>
 /// Get rectangles objects in the image
 /// </summary>
 /// <param name="image">Image to get the rectangles</param>
 /// <param name="filter">ColorFilter with the minimum height and minimum width</param>
 /// <returns>Return a rectangle array with the object coordinates</returns>
 public Rectangle[] GetObjectsCoordinates(System.Drawing.Image image, ColorFilter filter)
 {
     return GetObjectsCoordinates(image, filter.MinWidth, filter.MinHeight);
 }
 public void FindObjectsOfImage(System.Drawing.Image image, ColorFilter filter, ref Dictionary<Rectangle, Color> dictio)
 {
     foreach (Rectangle item in this.GetObjectsCoordinates(image, filter))
     {
         Rectangle coord = new Rectangle();
         if (HasParentBlock(Squares, item, out coord))
         {
             if (dictio.ContainsKey(coord))
             {
                 dictio[coord] = filter.BorderColor;
             }
             else
             {
                 dictio.Add(coord, filter.BorderColor);
             }
         }
     }
 }