<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -6,15 +6,82 @@ class ColorFiltering:
     self.camera = Camera(CV_CAP_ANY)
     self.window = Window()
     self.running = True
+    
+  #Francisco: Trying some color filtering  
+  def filterColorUsingHSV(self, channels=1):  
+    # compute the hsv version of the image 
+    hsvImage = cvCreateImage(self.size, self.depth, channels)
+    cvCvtColor (self.image, hsvImage, cv.CV_BGR2HSV)
+    
+    return Image(hsvImage)
+    
+        # compute which pixels are in the wanted range
+    # ranges for the limitation of the histogram
+    vmin = 10
+    vmax = 256
+    smin = 30
+    hsv_min = cvScalar (0, smin, vmin, 0)
+    hsv_max = cvScalar (180, 256, vmax, 0)
+    result = cvCreateImage(self.size, self.image.depth, channels)
+    cvInRangeS (hsvImage, hsv_min, hsv_max, result)
+    
+    return Image(result)
+    
+  #Francisco: Trying some color filtering  
+  def filterColorUsingRGB(self, image, channels=1):  
+    #compute which pixels are in the wanted range
+    # ranges for the limitation of the histogram
+    
+    bmin=50#0;
+    bmax=70#110;#190
+    gmin=60#0;
+    gmax=90#85;#62
+    rmin=140#45;#134
+    rmax=256#256;#254
+    
+    
+    # Make an image file for colors.
+    bimg = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    gimg = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    rimg = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+ 
+    # Split image into individual channels
+    cvSplit(image.image,bimg,gimg,rimg,None);
+ 
+    # Create intensity color map
+    intensity = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    cvAdd(bimg,gimg,intensity);
+    cvAdd(intensity,rimg, intensity);
+    
+    #Calculate rgb ratios
+    cvDiv(bimg, intensity, bimg, 256);
+    cvDiv(gimg, intensity, gimg, 256);
+    cvDiv(rimg, intensity, rimg, 256);
+ 
+    # Create rcup mask
+    car = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    bcar = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    gcar = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    rcar = cvCreateImage(image.size, IPL_DEPTH_8U, 1)
+    cvInRangeS(bimg, cvRealScalar(bmin), cvRealScalar(bmax), bcar);
+    cvInRangeS(gimg, cvRealScalar(gmin), cvRealScalar(gmax), gcar);
+    cvInRangeS(rimg, cvRealScalar(rmin), cvRealScalar(rmax), rcar);
+    
+    
+    cvAnd(bcar, gcar, car);
+    cvAnd(car, rcar, car);
+ 
+    # Filter out noise
+    cvErode(car, car, None, 2);
+    cvDilate(car, car, None, 2);
 
+    return Image(car)
+    
   def run(self):
     while self.running:
       current = self.camera.frame()
-      
-      green = createImage(current.size, current.image.depth)
-      green.setColor(0,255,255,0)
-            
-      self.window.show(green)
+                        
+      self.window.show(self.filterColorUsingRGB(current))
       self._handleKeyboardEvents()
 
   def _handleKeyboardEvents(self):  </diff>
      <filename>color_filtering.py</filename>
    </modified>
    <modified>
      <diff>@@ -35,7 +35,7 @@ class Image:
       cvReleaseImage(self.image)
   
   def setColor(self,r,g,b):
-    cvSet(self.image, cvScalar(r,g,b))    
+    cvSet(self.image, cvScalar(r,g,b,0))    
       
   def grayscale(self, channels=1):
     result = cvCreateImage(self.size, self.image.depth, channels)
@@ -78,39 +78,6 @@ class Image:
   def nand(self, anotherImage, channels=1):
     return self._not(self.image)._and(anotherImage)
     
-    
-  #Francisco: Trying some color filtering  
-  def filterColorUsingRGB(self, channels=1):  
-    #compute which pixels are in the wanted range
-    # ranges for the limitation of the histogram
-    
-    rgb_min = CV_RGB(100, 255, 100);
-    rgb_max = CV_RGB(0, 0, 0)
-    result = cvCreateImage(self.size, self.image.depth, channels)
-    cvInRangeS (self.image, rgb_min, rgb_max, result)
-    
-    return Image(result)
-      
-  #Francisco: Trying some color filtering  
-  def filterColorUsingHSV(self, channels=1):  
-    # compute the hsv version of the image 
-    hsvImage = cvCreateImage(self.size, self.image.depth, 3)
-    cvCvtColor (self.image, hsvImage, cv.CV_BGR2HSV)
-    
-    return Image(hsvImage)
-    
-        # compute which pixels are in the wanted range
-    # ranges for the limitation of the histogram
-    vmin = 10
-    vmax = 256
-    smin = 30
-    hsv_min = cvScalar (0, smin, vmin, 0)
-    hsv_max = cvScalar (180, 256, vmax, 0)
-    result = cvCreateImage(self.size, self.image.depth, channels)
-    cvInRangeS (hsvImage, hsv_min, hsv_max, result)
-    
-    return Image(result)
-    
 def getKeyPressed(wait=10):
   return cvWaitKey(wait)
   </diff>
      <filename>wrappers.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1544a0f2f3e540e0818a4f44d9f3d2f83b2649f3</id>
    </parent>
  </parents>
  <author>
    <name>Francisco Trindade</name>
    <email>frank.trindade@gmail.com</email>
  </author>
  <url>http://github.com/cv/opencv-wrappers/commit/776c381cec6b54cd325e7c50ccad27048920b2ae</url>
  <id>776c381cec6b54cd325e7c50ccad27048920b2ae</id>
  <committed-date>2008-05-16T08:18:09-07:00</committed-date>
  <authored-date>2008-05-16T08:18:09-07:00</authored-date>
  <message>Modified color filtering. Working with red, but still needs some
calibration</message>
  <tree>b7098bbc9a03d75cd1a569272fb5f78f8763a99e</tree>
  <committer>
    <name>Francisco Trindade</name>
    <email>frank.trindade@gmail.com</email>
  </committer>
</commit>
