<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -6,89 +6,53 @@ 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);
+    self.colour = False
 
-    return Image(car)
-    
   def run(self):
     while self.running:
       current = self.camera.frame()
-                        
-      self.window.show(self.filterColorUsingRGB(current))
+      
+      if not self.colour:
+        self.colour = createGreenImage(current.size)
+
+      output = current.sub(self.colour, channels=3)
+
+      self.window.show(output)
       self._handleKeyboardEvents()
 
   def _handleKeyboardEvents(self):  
     key = getKeyPressed()
-  
+
+    size = cvSize(640,480)
+
+    r = createRedImage(size)
+    g = createGreenImage(size)
+    b = createBlueImage(size)
+    y = createYellowImage(size)
+    f = createFuchsiaImage(size)
+    c = createCyanImage(size)
+    
     if key == '\x1b': # escape
       self.window.destroy()
       self.running = False
+
+    elif key == '1':
+      self.colour = r
+
+    elif key == '2':
+      self.colour = g
+
+    elif key == '3':
+      self.colour = b
+
+    elif key == '4':
+      self.colour = y
+
+    elif key == '5':
+      self.colour = f
+
+    elif key == '6':
+      self.colour = c
+
 if __name__ == '__main__':
   ColorFiltering().run()
\ No newline at end of file</diff>
      <filename>color_filtering.py</filename>
    </modified>
    <modified>
      <diff>@@ -24,8 +24,6 @@ class Camera:
 
 class Image:
 
-
-  
   def __init__(self, image):
     self.image = image
     self.size = cvSize(image.width, image.height)
@@ -34,8 +32,9 @@ class Image:
     if self and self.image:
       cvReleaseImage(self.image)
   
-  def setColor(self,r,g,b):
-    cvSet(self.image, cvScalar(r,g,b,0))    
+  def fill(self,r,g,b):
+    cvSet(self.image, cvScalar(r, g, b))
+    return self
       
   def grayscale(self, channels=1):
     result = cvCreateImage(self.size, self.image.depth, channels)
@@ -78,10 +77,60 @@ 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)
   
-def createImage(size, depth, channels=1):
+def createImage(size, depth=IPL_DEPTH_8U, channels=1):
   return Image(cvCreateImage(size, depth, channels))
-    
+
+def createBlueImage(size):
+  return createImage(size, channels=3).fill(255,0,0)
+
+def createGreenImage(size):
+  return createImage(size, channels=3).fill(0,255,0)
+
+def createRedImage(size):
+  return createImage(size, channels=3).fill(0,0,255)
+
+def createYellowImage(size):
+  return createImage(size, channels=3).fill(0,255,255)
+
+def createFuchsiaImage(size):
+  return createImage(size, channels=3).fill(255,0,255)
+
+def createCyanImage(size):
+  return createImage(size, channels=3).fill(255,255,0)
+
 cvStartWindowThread()    </diff>
      <filename>wrappers.py</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>776c381cec6b54cd325e7c50ccad27048920b2ae</id>
    </parent>
    <parent>
      <id>3f882bd3847227a4867a5f791ee12f96c23933a2</id>
    </parent>
  </parents>
  <author>
    <name>Francisco Trindade</name>
    <email>frank.trindade@gmail.com</email>
  </author>
  <url>http://github.com/cv/opencv-wrappers/commit/082488bad62dd2f89e42eee3744dcd19cf378a0b</url>
  <id>082488bad62dd2f89e42eee3744dcd19cf378a0b</id>
  <committed-date>2008-05-16T08:33:57-07:00</committed-date>
  <authored-date>2008-05-16T08:33:57-07:00</authored-date>
  <message>Merge branch 'master' of git://github.com/cv/opencv-wrappers

Conflicts:

	color_filtering.py
	wrappers.py</message>
  <tree>13318b5c6bb360aabe67867e640c5151884d1039</tree>
  <committer>
    <name>Francisco Trindade</name>
    <email>frank.trindade@gmail.com</email>
  </committer>
</commit>
