Python API

Images

exception RPA.Images.ImageNotFoundError

Bases: Exception

Raised when template matching fails.

args
with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

class RPA.Images.Images

Bases: object

Images is a library for general image manipulation. For image-based desktop automation, use the RPA.Desktop library.

Coordinates

The coordinates used in the library are pairs of x and y values that represent pixels. The upper left corner of the image or screen is (0, 0). The x-coordinate increases towards the right, and the y-coordinate increases towards the bottom.

Regions are represented as tuples of (left, top, right, bottom). For example, a 400 by 200-pixel region in the upper left corner would be (0, 0, 400, 200).

Template matching

Template matching refers to an operation where the (potential) location of a smaller image is searched from a larger image. It can be used for verifying certain conditions or locating UI elements for desktop or web automation.

Requirements

The default installation depends on Pillow library, which is used for general image manipulation operations.

For more robust and faster template matching, the library can use a combination of NumPy and OpenCV. They can be installed by opting in to the cv dependency:

pip install rpaframework[cv]

Examples

Robot Framework

The Images library can be imported and used directly in Robot Framework, for instance, for capturing screenshots or verifying something on the screen.

Desktop automation based on images should be done using the corresponding desktop library, i.e. RPA.Desktop.

*** Settings ***
Library    RPA.Images

*** Keywords ***
Should show success
    [Documentation]    Raises ImageNotFoundError if success image is not on screen
    Find template on screen    ${CURDIR}${/}success.png

Save screenshot to results
    [Documentation]    Saves screenshot of desktop with unique name
    ${timestamp}=      Get current date    result_format=%H%M%S
    Take screenshot    filename=${OUTPUT_DIR}${/}desktop_${timestamp}.png

Python

from RPA.Images import Images

def draw_matches_on_image(source, template):
    matches = lib.find_template_in_image(source, template)
    for match in matches:
        lib.show_region_in_image(source, match)

    source.save("matches.png")
ROBOT_LIBRARY_DOC_FORMAT = 'REST'
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
crop_image(image, region, filename=None)

Crop an existing image.

Parameters
  • image – Image to crop

  • region – Region to crop image to

  • filename – Save cropped image to filename

find_template_in_image(image, template, region=None, limit=None, tolerance=None) → List[RPA.core.geometry.Region]

Attempt to find the template from the given image.

Parameters
  • image – Path to image or Image instance, used to search from

  • template – Path to image or Image instance, used to search with

  • limit – Limit returned results to maximum of limit.

  • region – Area to search from. Can speed up search significantly.

  • tolerance – Tolerance for matching, value between 0.1 and 1.0

Returns

List of matching regions

Raises

ImageNotFoundError – No match was found

get_pixel_color_in_image(image, point)

Get the RGB value of a pixel in the image.

Parameters
  • image – image to get pixel from

  • point – coordinates for pixel or Point object

show_region_in_image(image, region, color='red', width=5)

Draw a rectangle onto the image around the given region.

Parameters
  • image – image to draw onto

  • region – coordinates for region or Region object

  • color – color of rectangle

  • width – line width of rectangle

class RPA.Images.RGB(red: int, green: int, blue: int)

Bases: object

Container for a single RGB value.

blue: int = None
classmethod from_pixel(value)

Create RGB value from pillow getpixel() return value.

green: int = None
luminance()

Approximate (perceived) luminance for RGB value.

red: int = None
class RPA.Images.TemplateMatcher

Bases: object

Container class for different template matching methods.

DEFAULT_TOLERANCE = 0.95
LIMIT_FAILSAFE = 256
match(image, template, limit=None, tolerance=None)

Attempt to find the template in the given image.

Parameters
  • image – image to search from

  • template – image to search with

  • limit – maximum number of returned matches

  • tolerance – minimum correlation factor between template and image

Returns

list of regions that match criteria

property tolerance
RPA.Images.chunks(obj, size, start=0)

Convert obj container to list of chunks of size.

RPA.Images.clamp(minimum, value, maximum)

Clamp value between given minimum and maximum.

RPA.Images.to_image(obj)

Convert obj to instance of Pillow’s Image class.