title: Python : Detect Color Then Click Color
body: <p>I am trying to take a screen shot, check the screen shot for a certain color, if the color is found then click on it. </p>
  
  <p>The problem I'm having is that the RGB values of the color has to be exact.</p>
  
  <p>I was wondering if it was possible to convert the image to an image with very few colors.</p>
  
  <p>I'm sorry for the clutter. I am not properly trained. I am just obsessed with coding now.</p>
  
  <p>Thank you for taking the time to read this.</p>
  
  <pre><code>import os, sys
  import Image, ImageGrab, ImageOps
  import time, random
  from random import randrange
  import win32api, win32con
  from numpy import *
  
  
  # Globals
  # ------------------
  
  x_pad = 0
  y_pad = 0
  
  
  # Screen Grab Function
  def screenGrab():
      b1 = (x_pad + 1,y_pad+1,x_pad+1921,y_pad+1081)
      im = ImageGrab.grab()
      ##im.save(os.getcwd() + '\\Snap__' + str(int(time.time())) +'.png', 'PNG')
      return im
  
  ## Grab Mouse Position
  ## MousePos = win32api.GetCursorPos()
  ## print MousePos
  
  ## Type in shell to grab RGB color
  ## im = screenGrab()
  ## im.getpixel(MousePos)
  
  ## Check Mouse Position for Black
  ## s = screenGrab()
  ## if s.getpixel(MousePos) &lt;= (96, 96, 96):
      ##print "I see black."   
  
  # Main 
  
  x = 920
  y = 465
  
  # Color Check Then Stop/Click Loop
  
  while True:
  
      s = screenGrab()
      s.convert("P", palette=Image.ADAPTIVE, colors=5)
      x = x + 10
      xy = (x, y)
      if s.getpixel(xy)== (255, 255, 255):
          break
      else:
          win32api.SetCursorPos((x, y))
          print x
          print y
  
          if x == 1250:
              x = 700
              y = y + 10
              if y == 985:
                  break
  </code></pre>
  
  <p>How do I use "s.convert("P", palette=Image.ADAPTIVE, colors=5)" correctly so that I limit the range of colors to something like (0, 255, 0)?</p>