Question #272460 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/272460

    Status: Open => Answered

Eugene Maslov proposed the following answer:
Hello Entity,
I can help with distinguishing the colors.
My findWithColor procedure finds an image with at least one pixel of exact 
color in the probe rectangle inside the image. So you may set, for example, 
gray target color for disabled menus and black color for active menus.
Debug mode allows seeing in the output the colors to select the target from.

import java.awt.Robot as jRobot
import java.awt.Color as Color
from sikuli import *

class RegionM(Region):
    def findWithColor(self, img, color=Color(255,255,255), 
probe=[0,0,1,1],debug=False): #probe=[top,left,width,height,0] from topleft
        myRobot=jRobot()
        res=False
        found=self.findAll(img)
        if not found:
            return False
        foundcolor=False 
        for but in found:
            for myy in 
range(but.getTopLeft().y+probe[1],but.getTopLeft().y+probe[1]+probe[3]):
                for myx in 
range(but.getTopLeft().x+probe[0],but.getTopLeft().x+probe[0]+probe[2]):
                    myColor=myRobot.getPixelColor(myx, myy)
                    if debug:                 
                        print "color at "+str(myx)+":" +str(myy)+":",myColor    
                    
                    if myColor==color:
                        foundcolor=True
                        res=but
                        if not debug:
                            break
                if foundcolor:
                    if not debug:
                        break
            if foundcolor:
                    if not debug:
                        break        
        return(res) 

#usage:
myreg=RegionM(SCREEN).findWithColor("ie1.png", color=Color(240,240,231), 
probe=[1,1,2,2], debug=True) #then set debug=False
mouseMove(myreg)


This piece of code is a part of an extended RegionM object, that I use for for 
simplicity of scripts. Please just remove the object notation if you don't need 
it.

And, partially concerning the other question, as far as I tried before,
there is no sense to make whole background or foreground of letters
transparent: then solid areas, filled with a color similar to remaining
non-transparent color, are selected instead of the letters.

-- 
You received this question notification because your team Sikuli Drivers
is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : sikuli-driver@lists.launchpad.net
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to